用ASP调用带参数的存储过程出现问题。请高手指教!
L_Lei 2005-07-25 11:54:04 小弟第一次使用asp调用存储过程。出现如下问题,请高手指教。
存储过程如下:
CREATE PROCEDURE [dbo].[sjsj1]
@tablename varchar(30)
AS
exec( 'insert into njrb_sjsj1(Fstatus,FServiceID) select Fstatus,FServiceID from [SMS3W].[sharesmyd].[DBO].'+@tablename+ ' where fmsgtype=60')
exec( 'insert into njrb_sjsj2(Fstatus,FServiceID) select Fstatus,FServiceID from [SMS3W].[sharesmyd].[DBO].'+@tablename+ ' where fmsgtype=62')
GO
ASP脚本如下:
set cmd=server.CreateObject("adodb.command")
cmd.ActiveConnection=cnngp
cmd.CommandType=4
cmd.Prepared=true
cmd.CommandText="sjsj1"
tblname="Msgtable"
set prm1=cmd.CreateParameter ("@tablename",adVarChar,1,30,tblname)
cmd.Parameters.append prm1
cmd.Execute
已经包含了adovbs.inc。
运行时提示错误:
Microsoft VBScript 编译器错误 错误 '800a03f6'
缺少 'End'
/iisHelp/common/500-100.asp,行242
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]异类查询要求为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项。这将确保一致的查询语义。请启用这些选项,然后重新发出查询。
/test/njrb/login.asp,行100
还有个问题不明白,在set prm1=cmd.CreateParameter ("@tablename",adVarChar,1,30,tblname)
语句中,定义变量名字的时候,这个变量的名字是不是必须是存储过程中的变量的名字。比如,存储过程中的参数名字是@tablename,那么在cmd.CreateParameter 中定义的变量的名字也必须是@tablename