1、創建存儲過程:
use HotelDB
if exists(select * from sys.procedures where name='pro_getGuestName')
drop procedure pro_getGuestName
gocreate procedure pro_getGuestName
@GuestID int,
@GuestName varchar(50) output
as
begin
--sp_executesql後面執行的SQL語句必須是Unicode編碼的字符串,所以此處爲nvarchar類型。
declare @sqlStr nvarchar(1000);
--如果使用如下語句,將報錯“必須聲明標量變量 "@GuestID"。”
--set @sqlStr=N'select @GuestName=GuestName from dbo.GuestRecord where GuestID=@GuestID';
--以下是正確的
set @sqlStr=N'select @GuestName=GuestName from dbo.GuestRecord where GuestID='+CAST(@GuestID AS varchar)+'';
--必須在前面加上大寫字母N,以表明後面的字符串是使用Unicode類型編碼
execute sp_executesql @sqlStr,N'@GuestName varchar(50) output',@GuestName output
end
2、執行存儲過程:
begin
declare @GuestID int;
declare @GuestName varchar(50);
set @GuestID=20;
exec [pro_getGuestName] @GuestID,@GuestName output
select @GuestName;
--print '@GuestName:'+@GuestName;
end
go
參考來源:https://www.cnblogs.com/hnsdwhl/archive/2011/07/23/2114730.html