这是经典的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之前打印,我看到了值。
请有人说清楚。感谢
答案 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)
尝试在参数名称中删除“@”。