2010-11-16 7 views

Antwort

2

Wie im CREATE PROCEDURE documentation angegeben, ist der Beginn/Ende optional:

{[BEGIN] sql_statement [;] [... n] [END]}

Einer oder mehr Transact -SQL Anweisungen, die den Körper der Prozedur umfassen. Sie können die optionalen Schlüsselwörter BEGIN und END verwenden, um die -Anweisungen zu umschließen. Weitere Informationen finden Sie in den folgenden Abschnitten Best Practices, General Remarks und Einschränkungen und Einschränkungen .

Je nach persönlicher Präferenz schließe ich sie immer ein.

1

Letztere nur eine gute Art der Programmierung ist und folgende allgemeine standards.They unterscheiden sich nicht so weit in etwas, wie ich weiß.

Ich persönlich denke, es macht Sinn und verbessert die Lesbarkeit, um eine BEGIN und END um jeden logischen Block des Codes (auch in gespeicherten Prozeduren) zu haben.

+0

'a BEGIN und END um jede logische Stück code', igitt! Ich denke, das würde es mehr bringen, als dass es helfen würde. –

+0

Nun, ich sehe Ihren Punkt..Ich habe versucht, die besten Praktiken zu zeigen..Ich würde es nicht für einen Liner oder triviale Orte ... – Vishal

2

Für mich ist es nur eine unnötige zusätzliche Einzugsebene. Wenn Sie es jedoch zu einem BEGIN TRY - END TRY mit einem BEGIN CATCH - END CATCH machen, fügt es einen wirklichen Zweck hinzu.

0

Es gibt keine echte Pourpose in dem Fall. Aber Ihr Code wird lesbar und sauber sein, wenn Sie BEGIN/END-Blöcke verwenden.

+0

Ich habe viel Code mit BEGIN/END-Blöcke gesehen, die nicht war sehr gut lesbar. Es gibt viel mehr zu lesbarem Code als nur BEGIN/END-Blöcke überall zu verwenden. –

0

Die BEGIN und END haben keine Lager für eine gespeicherte Prozedur, aber sie sind für eine Funktion erforderlich.

Gut:

CREATE PROC dbo.sproc(@v varchar(10)) 
AS 
RETURN -1 

Nicht in Ordnung:

CREATE FUNCTION dbo.fun(@v varchar(10)) 
RETURNS INT 
AS 
RETURN 1 
Verwandte Themen