建立了一个存储过程,一个传入参数v_name,一个返回参数ii,如下
create or replace procedure test_procedure
(v_name in varchar2,
ii out integer)在sqlplus里执行:exec test_procedue(‘hello’);报错,提示参数个数不对,
请教如何正确执行带有返回参数的存储过程
create or replace procedure test_procedure
(v_name in varchar2,
ii out integer)在sqlplus里执行:exec test_procedue(‘hello’);报错,提示参数个数不对,
请教如何正确执行带有返回参数的存储过程
cmd.CommandText = "EXECUTE 存储过程名称 @EmployeeID,@ZhiWu OUTPUT";//@员工编号为要传入的参数.
cmd.Parameters.Add("@EmployeeID", SqlDbType.Int).Value = User;
cmd.Parameters["@ZhiWu"].Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
string ID = (string)selectCmd.Parameters["@ZhiWu"].Value;
这样就可以得到职务
如果返回的是多行数据,则
SqlDataReader reader = cmd.ExecuteReader();
ArrayList al = new ArrayList();
while (reader.Read())
{
al.Add(reader.GetValue(0).ToString());//获取第一列中的值
}
reader.Close();
begin
exec test_procedue('hello',:vi);
end;
try something like the following, note, you have to close Reader first
cmd = new SqlCommand("test_procedure",conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@ret", SqlDbType.Int);
cmd.Parameters["@ret"].Direction = ParameterDirection.Output;
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
//
}
reader.Close();
int ret = (int)cmd.Parameters["@ret"].Value;
sql>exec test_procedue('hello', :x);
sql>print :x