4、比如: Create procedure GetName @uid nvarchar(1), @usernam nvarchar(10)='' output AS set @username='hongchao' GO 在上面的存储过程当中我们传递进的参数是@uid,而参数@username则在调有的时候不需要传递进去。这样,存储过程会返回给我们参数@username的值是‘hongchao’。上面的都比较的容易,需要注意的是,当在SQL2000中的时候,如果你的存储过程只有一个参数,并且这个参数是OUTPUT类型的,你必须在调用这个存储过
5、程的时候给这个参数一个初始的值,否则会出现调用错误的情况! 2、在存储过程中的书写注意事项 这一点在MS SQL Server7.0和MS SQL Server2000种有些地方是不一样的,也不知道是不是微软的遗漏,那就是有些系统的关键字在不同的版本之间有所不同,比如关键字level,同样的一句话: select * from users where level=1 在MS SQL Server7当中的存储过程当中运行没有丝毫的问题,但是到了MS SQL Server2000当中则会出现运行的错误,原因就是在于在MS SQL Server2000
6、中“level”被当作了关键字(奇怪的是SQL7当中也同样是关键字,却没问题),所以在SQL2000当中,上面的语句应当改为: select * from users where [level]=1 从上面的例子中我们可以看到,在你编写存储过程的时候,最好在有可能和系统关键字的地方使用“[”和“]”将他包围起来,以避免在移植过程中出现的运行错误问题。 3、在存储过程中使用系统存储过程SP_Executesql的注意事项 我们在编写自己的存储过程的时候,往往在很多的情况下,会使用到系统的存储过程SP_Execute。但是需要的注意的是,如果你在这个