以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  储存过程中的返回参数是否只能是受影响的行数?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=144131)

--  作者:happyft
--  发布时间:2019/12/11 17:11:00
--  储存过程中的返回参数是否只能是受影响的行数?
储存过程的代码:
ALTER PROCEDURE [dbo].[GetOrderByID]
    @订单编号 NVARCHAR(16) ,
    @客户 NVARCHAR(50) OUTPUT
AS
    BEGIN
        SELECT  @客户 = 客户
        FROM    订单
        WHERE   订单编号 = @订单编号;
        RETURN @客户
        --IF @@Error <> 0
        --    RETURN -1;
        --ELSE
        --    RETURN 100;
    END;

前端调用的代码:
Dim cmd As new SQLCommand
cmd.ConnectionName = Mydata
cmd.CommandText = "GetOrderByID"
cmd.StoredProcedure = True
cmd.Parameters.Add("@客户2", "", False) \'返回参数
cmd.Parameters.Add("@订单编号","60803031") \'输入参数
cmd.Parameters.Add("@客户", "", True) \'输出参数
cmd.ExecuteNonQuery
Output.Show( cmd.Parameters("@客户"))
Output.Show( cmd.Parameters("@客户2"))
执行就会出现下面的错误:
String[0]: Size 属性具有无效大小值 0。

是不是返回参数仅返回语句执行中受影响的行数,如果要返回字符等变量必须用output类似上面客户那种方式返回?

谢谢!


--  作者:有点蓝
--  发布时间:2019/12/11 17:19:00
--  
返回值只能是整数值