过程没有参数且提供参数,而我的存储过程接受参数时发生异常
本文关键字:参数 存储过程 异常 我的 过程 | 更新日期: 2023-09-27 18:11:14
下面是存储过程:
ALTER PROCEDURE Retrieve_Data
@noOfRecords INTEGER
AS
BEGIN TRY
SET NOCOUNT ON;
SELECT TOP(@noOfRecords) studentId
FROM Student;
END TRY
BEGIN CATCH
RETURN -101
END CATCH
RETURN 0
下面是c#代码:
DataSet ds = null;
try
{
using (SqlConnection conn = new SqlConnection(ConfigurationSettings.ConectionString))
{
using (SqlDataAdapter da = new SqlDataAdapter())
{
da.SelectCommand = new SqlCommand(storeProcName, conn);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
SqlParameter param= new SqlParameter("@noOfRecords", SqlDbType.Int);
param.Value=10;
da.SelectCommand.Parameters.Add(param);
ds = new DataSet();
da.Fill(ds, "result");
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
return ds;
}
}
}
在执行代码时,我得到一个sql异常:
Procedure Retrieve_Data没有参数,并且提供了参数
存储过程的语法不正确。您需要在括号
内提供输入参数ALTER PROCEDURE [dbo].[Retrieve_Data]
(
@noOfRecords INT
)
AS
BEGIN
也可以尝试清除代码中的参数:
if (conn.State == ConnectionState.Open)
{
da.SelectCommand.Parameters.Clear();;
conn.Close();
}
更改存储过程并使用BEGIN ... END
ALTER PROCEDURE [dbo].[Retrieve_Data]
@noOfRecords INT
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY
SELECT TOP(@noOfRecords) studentId
FROM Student;
END TRY
BEGIN CATCH
RETURN -101
END CATCH
RETURN 0;
END
用ORDER BY ...
对表Student
排序的第二件事