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

あなたはこのSPで宣言されたSQL変数です。このSPのようにパラメータを定義する必要があります

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

ストアド プロシージャにはパラメータがないためdeclare your parameters、ストアド プロシージャで使用できますbetween brackets

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

)
....
于 2012-11-05T10:29:02.047 に答える