Тялото на процедурата не трябва да използва локални променливи, чиито имена са същите като имената

Всички типове данни на SQL, включително дефинирани от потребителя, се използват за определяне на типа данни, който ще има съответният параметър на съхранената процедура., с изключение на таблицата. Типът данни CURSOR обаче може да се използва само като изходен параметър на съхранена процедура, т.е. с ключовата дума OUTPUT.

Когато посочвате типа данни на курсора, трябва да включите и ключовите думи VARYING и OUTPUT. Изходните параметри от типа на курсора могат да бъдат няколко.

Наличие на ключова дума OUTPUT означава, че съответният параметър е за връщане на данни от съхранената процедура. Това обаче не означава, че параметърът не е подходящ за предаване на стойности на съхранена процедура.

Посочването на ключовата дума OUTPUT инструктира сървъра, когато излиза от съхранената процедура, да присвоява текущата стойност на параметъра на локалната променлива, която е посочена като стойност на параметъра при извикване на процедурата.

Не е разрешено да се използват изрази или константи, които са валидни за нормалните параметри. Аргументи от типове text, ntext и image не могат да бъдат изведени, ако процедурата не е CLR процедура.

Когато е посочена ключовата дума OUTPUT, стойността на съответния параметър при извикване на процедура може да бъде зададена само с помощта на локална променлива.

Ключовата дума VARYING се използва заедно с параметъра OUTPUT от тип CURSOR. Той указва, че изходният параметър ще бъде наборът от резултати.

Ключовата дума DEFAULT е стойност, която ще приеме съответния параметър по подразбиране. По този начин, когато извиквате процедура, не можете изрично да посочите стойността на съответния параметър.

Тъй като сървърът кешира плана за изпълнение на заявката и компилирания код, следващото извикване на процедурата ще използва готовите стойности. В някои случаи обаче все пак трябва да прекомпилирате кода на процедурата. Посочването на ключовата дума RECOMPILE казва на системата да генерира план за изпълнение на съхранената процедура при всяко извикване.