+ -
当前位置:首页 → 问答吧 → 存储过程既是输入参数,又是输出参数?

存储过程既是输入参数,又是输出参数?

时间:2011-12-19

来源:互联网

看到参数类型:InputOutput 参数既能输入,也能输出。
如果仅仅是输入参数或者仅仅是输出参数,没问题,容易调用。
但如何创建并用C#调用参数既能输入也能输出这种类型的存储过程?
请给出sql server中的示例存储过程、在查询分析器中调用及使用C#代码调用。
谢谢!

作者: zhouwen   发布时间: 2011-12-19

C# code

public class vote_confirm
{
    private const string PARM_VOTE_CONFIRM = "sp_vote_confirm";
    private const string PARM_VOTE_ID = "@p_key";
    private const string PARM_RESULT = "@p_result";
  
    public vote_confirm()
    {
        //
        // TODO: Add constructor logic here
        //
    }
    public static string ConfirmVote(string vote_id)
    {
        string vResult;
        OleDbParameter[] orderParms = new OleDbParameter[] { 
             new OleDbParameter(PARM_VOTE_ID,OleDbType.VarChar ,50),
             new OleDbParameter(PARM_RESULT,OleDbType.VarChar ,50)
         };
        orderParms[0].Value = vote_id;
        orderParms[0].Direction = ParameterDirection.Input;
        orderParms[1].Direction = ParameterDirection.Output;
        OracleHelper.ExecuteNonQuery(OracleHelper.ConnString, CommandType.StoredProcedure, PARM_VOTE_CONFIRM, orderParms);
        vResult = orderParms[1].Value.ToString();
        return vResult;
    }
}


SQL code

create or replace procedure sp_vote_confirm(
  p_key        in   varchar2   default '',
  p_result         out  varchar2
  )
as
 V_VOTE_ID number;
 p_out varchar2(50);
begin
  V_VOTE_ID:=p_key;
  UPDATE IERP_VOTE_MASTER SET STATUS='A' WHERE VOTE_ID=V_VOTE_ID;
  p_result:=p_out;
  commit;
end;


自己写的一个简单的存储过程,模仿者写就行了

作者: tinranqi   发布时间: 2011-12-19

SQL code

create or replace procedure sp_vote_confirm(
  p_key        in   varchar2   default '',
  p_result         out  varchar2
  )
as
 V_VOTE_ID number;
 p_out varchar2(50);
begin
  V_VOTE_ID:=p_key;
  UPDATE IERP_VOTE_MASTER SET STATUS='A' WHERE VOTE_ID=V_VOTE_ID;
  p_out:='这是输出结果';
  p_result:=p_out;
  commit;
end;

作者: tinranqi   发布时间: 2011-12-19

SQL code

create or replace procedure sp_vote_confirm(
  p_key        in   varchar2   default '',
  p_result         out  varchar2
  )
as
 V_VOTE_ID number;
 p_out varchar2(50);
begin
  V_VOTE_ID:=p_key;
  UPDATE IERP_VOTE_MASTER SET STATUS='A' WHERE VOTE_ID=V_VOTE_ID;
  p_out:='这是输出结果';
  p_result:=p_out;
  commit;
end;

作者: tinranqi   发布时间: 2011-12-19

C# code
create proc pr_name(@num int out)
as
begin
    select @num*@num
    set @num=@num+1
end

declare @num int 
set @num=2
exec pr_name @num output
print @num

/*
-----------
4

(1 行受影响)

3

作者: ssp2009   发布时间: 2011-12-19

相关阅读 更多