经典 ASP 存储过程插入语句中出了什么问题



这是经典的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',但没有提供。

来源:Microsoft OLE DB Provider for SQL Server

如果我执行存储过程本身,那么它工作得很好。我有类似的经典asp代码在其他页面,这工作得很好。是的,我确保xStats_ID确实有值。我在。execute之前打印,我看到了值。

请有人给点光照吧。由于

尝试像这样显式地附加参数:

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

代替.Parameters("")

这是另一篇可能有所帮助的文章:如何在经典ASP上进行参数化SQL查询?

直到今天我才知道问题出在哪里。

我没有包括选项。. inc .文件,用于常量的工作。

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

远离经典ASP的好理由[除非我的老板听了]

试着在你的参数名中去掉"@"

最新更新