1.
use TestForProcGOdeclare @Id int, @Sex varchar(10), @Name varchar(10)set @Id=14 set @Sex='male'exec getid @Id output, @Sex, @Name outselect @Id as Id, @Name as Name
wrongs:
set @Id=14, set @Sex='male'
set @Id=14, @Sex='male'
2.
ALTER proc [dbo].[getid_return]@Id int,@Sex varchar(10)asdeclare @ReturnVar varchar(10)select @ReturnVar=CustomerName from Customerwhere CustomerId=@Id and Sex=@Sexreturn @ReturnVar
錯誤: return @ReturnVar
return 的值只能是整數,返回一個varchar類型的值當然會報錯。
修改的方法有兩種,一是把return改成seleclt,二是去掉return,直接用output定義變數。
說明:
修改為select @ReturnVar以後,執行
@Name=getid_return @var, @var
以後便會立即輸出表中的值, 這樣是不太建議的,因為輸出的標題是NULL,為了方便定義,還是應該將輸出的變數定義為output類型
3.
declare @Id int, @Sex varchar(10), @Name varchar(10)set @Id=14set @Sex='male'exec getid_return @Id, @Sex, @Name outselect @Name as Name
錯誤:
proc裡定義了@Name為 varchar out類型, 但是在執行時輸入:
exec getid_return @Id, @Sex, @Name
這樣是得不到輸出結果的,應該改成 exec getid_return !Id, @Sex, @Name out