这是经典的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的好理由[除非我的老板听了]
试着在你的参数名中去掉"@"