-2
Alter procedure budgetno_proc
    @wono varchar(max),
    @retvalue varchar(max) output
as
begin
    declare @budno varchar(max)

    if not exists(select * from budgetdet where wono=@wono)
    begin
        set @budno =LEFT(@wono,13)+'-'+RIGHT('0'+CAST((SELECT  ISNULL(MAX(CONVERT(INT,LEFT(@wono,13))),0)+1 from budgetdet WHERE wono=@wono) AS   VARCHAR(20)),1)
    end
    else
    begin
        set @budno=LEFT(@wono,13)+'-'+'1R'+'-'+RIGHT('000'+CAST((SELECT MAX(CONVERT(INT,SUBSTRING(budno,18,LEN(budno))))+1 from budgetdet WHERE wono=@wono) AS VARCHAR(20)),3)
    end

    set @retvalue = @budno
end

これは、出力パラメーターを持つストアド プロシージャです。

そして、これは私のC#コードです:

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["gdb"].ConnectionString);
con.Open();

SqlCommand cmd = new SqlCommand("budgetno_proc", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@wono",Workorder_txt.Text);

SqlParameter param = new SqlParameter("@retvalue", SqlDbType.VarChar,30);
param.Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add(param);

string budgetnum = (string)cmd.Parameters["@retvalue"].Value;
cmd.ExecuteNonQuery();
con.Close();

@retvalueプロシージャからその値を取得できません。

私がしなければならない変更はありますか?注意してください。

ありがとう

4

2 に答える 2

1

ParameterDirectionReturnValueではなくOutputに設定しました

  param.Direction = ParameterDirection.Output;
        cmd.Parameters.Add(param);

        cmd.ExecuteNonQuery();

        string budgetnum = (string)cmd.Parameters["@retvalue"].Value;
于 2013-10-10T07:34:47.843 に答える