close

不要被 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!)

以上代碼執行結果如下:

image

arrow
arrow
    創作者介紹
    創作者 過時程式員 的頭像
    過時程式員

    過時程式員的部落格

    過時程式員 發表在 痞客邦 留言(0) 人氣()