0

下面是我存储在 MSSQL 服务器中的 SP。

USE [testdb]
GO
/****** Object:  StoredProcedure [dbo].[insertSerial]    Script Date: 11/05/2012 16:38:20 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[insertSerial]
AS

DECLARE @start int
DECLARE @end int
DECLARE @expdate datetime

BEGIN TRAN
WHILE @start < @end
BEGIN
 INSERT tbl_serial VALUES (@start, @expdate)
 SET @start = @start + 1
 END
 COMMIT TRAN    

然后我尝试像这样从我的 ASP.NET 应用程序调用 SP -

        SqlConnection sqlconn = new SqlConnection(ConfigurationManager.ConnectionStrings["connstr"].ConnectionString);
        SqlCommand cmd = new SqlCommand("insertSerial", sqlconn);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@start", txtStart.Text);
        cmd.Parameters.AddWithValue("@end", txtEnd.Text);
        cmd.Parameters.AddWithValue("@expdate", System.DateTime.Now);

        try
        {
            sqlconn.Open();
            cmd.ExecuteNonQuery();
        }
        catch (SqlException ex)
        {
            lblStatus.Text = ex.Message;
        }
        finally
        {
            sqlconn.Close();
        }

然后我得到了这个Procedure insertSerial has no parameters and arguments were supplied.错误。是不是因为我在SP中声明参数的方式不对?如果是这样,我该如何解决它们?

4

3 回答 3

1

sp是无效的sql

这是如何声明参数

ALTER PROCEDURE [dbo].[foo] @bar INT AS BEGIN

于 2012-11-05T10:30:00.033 回答
0

您的存储过程没有参数,因此您可以declare your parameters在存储过程between brackets中。

CREATE PROCEDURE dbo.insertSerial
(
    @start  varchar(1024),
    @end varchar(1024),
    @expdate datetime

)
....
于 2012-11-05T10:29:02.047 回答
0

你在这个 SP 中声明了 SQL 变量,你需要在这个 sp 中定义参数,比如

ALTER PROCEDURE [dbo].[insertSerial]
 @start int
 @end int
 @expdate datetime
AS 
于 2012-11-06T05:01:45.370 回答