Classic ASP StoredProcedure插入语句有什么问题

时间:2013-05-24 17:32:37

标签: stored-procedures asp-classic

这是经典的ASP代码

Set objCommandSec = CreateObject("ADODB.Command")
        With objCommandSec
            Set .ActiveConnection = MyConn
            .CommandType = adCmdStoredProc
            .CommandText = "ReportsPDFInsert"

            .CreateParameter "@StatsID", adInteger, adParamInput
            .Parameters("@StatsID") = xStats_ID

            .CreateParameter "@MemberID", adInteger, adParamInput
            .Parameters("@MemberID") = xMemberID

            .CreateParameter "@LanguageID", adInteger, adParamInput
            .Parameters("@LanguageID") = 1  '1=EN

            .CreateParameter "@PDFFilename", adVarWChar , adParamInput
            .Parameters("@PDFFilename") = PDFFilename

            .Execute
        End With 

这是存储过程代码

ALTER PROCEDURE [dbo].[ReportsPDFInsert]
-- Add the parameters for the stored procedure here
@StatsID INT
,@MemberID INT
,@LanguageID     INT
,@PDFFilename NVARCHAR(50)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for procedure here
INSERT INTO [dbo].[ReportsPDF]
       ([StatsID]
       ,MemberID
       ,[LanguageID]
       ,[PDFFilename]
       ,[DateCreated])
 VALUES
       (@StatsID
       ,@MemberID
       ,@LanguageID
       ,@PDFFilename
       ,GETDATE())

END

我收到错误

错误编号:-2147217904

错误描述:过程'ReportsPDFInsert'需要参数'@StatsID',这是未提供的。

来源:用于SQL Server的Microsoft OLE DB提供程序

如果我自己执行存储过程,那么它工作正常。我在其他页面中有类似的经典asp代码,并且工作正常。是的,我确保xStats_ID确实有价值。我在.Execute之前打印,我看到了值。

请有人说清楚。感谢

3 个答案:

答案 0 :(得分:2)

尝试使用以下内容显式附加参数:

cmd.Parameters.Append cmd.CreateParameter("@StatsID",adInteger, adParamInput,xStats_ID)

而不是.Parameters("")

这是另一篇可能会有所帮助的帖子: How to make a parametrized SQL Query on Classic ASP?

答案 1 :(得分:1)

直到今天我才知道问题是什么。

我没有将 adovbs.inc 文件包含在常量中。

我不知道为什么会抛出其他错误信息。

有理由退出经典ASP [只有我老板听的时候]

答案 2 :(得分:0)

尝试在参数名称中删除“@”。