C# 从存储过程中获取值
我想从存储过程中创建c#helper 存储过程结束代码 当我运行代码时,我发现错误过程或函数的参数太多C# 从存储过程中获取值,c#,stored-procedures,ado.net,C#,Stored Procedures,Ado.net,我想从存储过程中创建c#helper 存储过程结束代码 当我运行代码时,我发现错误过程或函数的参数太多 public int xda_sp_GetTagWithComponent(string ComponentNo) { SqlConnection conn = new SqlConnection(string.Format("Data Source={0};Password={1};User ID={2};Initial Catalog={3};Connection Timeout=
public int xda_sp_GetTagWithComponent(string ComponentNo)
{
SqlConnection conn = new SqlConnection(string.Format("Data Source={0};Password={1};User ID={2};Initial Catalog={3};Connection Timeout={4}", DataSource, Password, UserID, InitialCatalog, ConnTimeOut));
int ReturnResult;
try
{
conn.Open();
// 1. SP name
SqlCommand cmd = new SqlCommand("xda_sp_GetTagWithComponent", conn);
// 2. to execute a stored procedure
cmd.CommandType = CommandType.StoredProcedure;
// 3. add parameter
cmd.Parameters.Add("@ComponentSerialNo", SqlDbType.VarChar, 16).Direction = ParameterDirection.Input;
cmd.Parameters["@ComponentSerialNo"].Value = ComponentNo;
cmd.Parameters.Add("@SerialNo", SqlDbType.VarChar, 16).Direction = ParameterDirection.Output;
cmd.Parameters["@SerialNo"].Value = "";
cmd.Parameters.Add("@returnResult", SqlDbType.Int, 100).Direction = ParameterDirection.Output;
//4. Execute
cmd.ExecuteNonQuery();
//5. Get Result
ReturnResult = Convert.ToInt32(cmd.Parameters["@returnResult"].Value);
}
catch
{
ReturnResult = 0;
}
finally
{
// Close the connection
if (conn != null)
{
conn.Close();
}
}
return ReturnResult;
}
您正在将最后一个参数设置为
ParameterDirection.Output
,但这意味着您的存储过程需要在传入参数列表中将其声明为输出。像这样的
CREATE PROCEDURE xda_sp_GetTagWithComponent
@ComponenSerialNo varchar(16),
@SerialNo varchar (16),
@returnResult INT OUT
AS
.....
但是,如果您只有前两个参数,并且给定名称,希望将存储过程中RETURN语句的值分配给@returnResult,那么应该将其声明为
cmd.Parameters.Add("@returnResult", SqlDbType.Int).Direction =
ParameterDirection.ReturnValue;
改用
cmd.Parameters.Add("@SerialNo", SqlDbType.VarChar, 16).Direction = ParameterDirection.InputOutput;
cmd.Parameters["@SerialNo"].Value = "";
您可以发布您看到的特定错误吗?…您可以粘贴存储过程代码吗?…您的第二个参数具有输出方向,它不应该是InputOutput吗?
cmd.Parameters.Add("@SerialNo", SqlDbType.VarChar, 16).Direction = ParameterDirection.InputOutput;
cmd.Parameters["@SerialNo"].Value = "";