求教:关于存储过程的调用问题?
我建立了一个存储过程:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_textcopy]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[sp_textcopy]
GO
CREATE PROCEDURE sp_textcopy
@srvname varchar (30), --服务器名
@login varchar (30), --用户名
@password varchar (30), --密码
@dbname varchar (30), --数据库名
@tbname varchar (30), --表名
@colname varchar (30), --存储文件的字段名
@filename varchar (30), --要存取的文件名
@whereclause varchar (40), --条件
@direction char(1) --I 为存储到数据库,O 从数据库中读出成文件
AS
DECLARE @exec_str varchar (255)
SELECT @exec_str =
'textcopy /S ' + @srvname +
' /U ' + @login +
' /P ' + @password +
' /D ' + @dbname +
' /T ' + @tbname +
' /C ' + @colname +
' /W "' + @whereclause +
'" /F ' + @filename +
' /' + @direction
EXEC master..xp_cmdshell @exec_str
在ASP中使用ADO的Command对象调用,设置如下:
set fetch = server.CreateObject("adodb.command")
fetch.CommandType = 4
fetch.CommandText ="sp_textcopy"
fetch.ActiveConnection = session("Connstr")
set para= fetch.CreateParameter("srvname",adVarChar,adParamInput,30,"SG")
fetch.Parameters.append para
set para= fetch.CreateParamete("login",adVarChar ,adParamInput,30,"s")
fetch.Parameters.append para
set para=fetch.CreateParameter("password",adVarCharr,adParamInput,30,"1")
fetch.Parameters.append para
set para=fetch.CreateParameter("dbname",adVarChar,adParamInput,30,"AirShow")
fetch.Parameters.append para
set para=fetch.CreateParameter("tbname",adVarChar,adParamInput,100,"影像资料")
fetch.Parameters.append para
set para = fetch.CreateParameter("colname",adVarChar,adParamInput,100,"影像资料")
fetch.Parameters.append para
set para = fetch.CreateParameter("filename",adVarChar,adParamInput,30,"d:\1.avi")
fetch.Parameters.append para
set para = fetch.CreateParameter("whereclause",adVarChar,adParamInput,30,"where 影像ID=16")
fetch.Parameters.append para
set para = fetch.CreateParameter("direction",adChar,adParamInput,1,"o")
fetch.Parameters.append para
fetch.Execute
执行以后就会出现错误:在第一个Set Para语句处出现:变量或者类型不正确,或者不在可以接受的范围之内,要不就是与其他数据冲突。 请教高手:为何会出现该问题,应当如何解决?谢谢!