不要被 PowerScript 的語法混淆,在存儲過程裏的 「return」是不會返回值到 PowerScript 的。不少人以為會返回到「sqlcode」,其實不然,「sqlcode」是給數據庫反映存儲過程有沒有成功執行的,寫 return 什麼值都沒有意義,它只會讓你退出而已,取值的話,要用「Fetch」。
-- Stored Procedure
create PROCEDURE usp_sample @input varchar(10), @rtn_int int output, @rtn_char varchar(50) output
AS
BEGIN
set @rtn_int = @rtn_int * 10
set @rtn_char = 'I am result'
return 99 -- 試一下 return 啊!
END
GO
-- PowerScript
li_rtn = 3
ls_rtn = 'hey'
declare lsp_sample procedure for dbo.usp_sample
@input = 'Hello',
@rtn_int = :li_rtn output, // 注意要設為 output,順序也要跟存儲過程裏的對上
@rtn_char = :ls_rtn output
using sqlca;
execute lsp_sample;
li_sqlcode = sqlca.sqlcode;
fetch lsp_sample into :li_rtn, :ls_rtn; // 取返回值
close lsp_sample;
messagebox('sqlcode = ' + string(li_sqlcode), 'Result: ' + string(li_rtn) + ' / ' + ls_rtn, Information!)
以上代碼執行結果如下: