我已经有了这个存储过程:
ALTER PROCEDURE [dbo].[sp_XNet_Backup]
@backupPath NVARCHAR(4000) = null,
@rc INT OUT
AS
BEGIN
SET @rc = 0
...
...
以这种方式从c#项目启动:
SqlParameter[] paramters = new SqlParameter[2];
byte i = 0;
string sp = "dbo.sp_XNet_Backup";
using (SqlConnection conn = DBManager.CreateADOConnMaster())
{
conn.Open();
SqlCommand cmd = new SqlCommand(sp, conn);
cmd.CommandType = CommandType.StoredProcedure;
paramters[i++] = new SqlParameter("@backupPath", completePath);
paramters[i] = new SqlParameter("@rc", SqlDbType.Int);
paramters[i].Direction = ParameterDirection.InputOutput;
foreach (SqlParameter param in paramters)
cmd.Parameters.Add(param);
cmd.ExecuteNonQuery();
...
...
但它给了我这个错误:
程序或功能' sp_XNet_Backup'期望参数' @ rc',哪个 没有提供。
答案 0 :(得分:0)
而不是ParameterDirection.InputOutput
,请使用ParameterDirection.Output
cmd.Parameters.Add("@rc", SqlDbType.Int).Direction = ParameterDirection.Output;
try
{
if (cmd.Connection.State == ConnectionState.Closed)
{
cmd.Connection.Open();
}
cmd.ExecuteNonQuery();
result = Convert.ToInt32(cmd.Parameters["@rc"].Value);
}
catch (Exception)
{
}
finally
{
cmd.Connection.Close();
Response.Write(result);
}
答案 1 :(得分:0)
我相信这是因为在调用cmd.ExecuteNonQuery()之前没有分配参数值;
请添加值并尝试,希望这有帮助
foreach (SqlParameter param in paramters)
{
param.Value = //somevalue
cmd.Parameters.Add(param);
}