CREATE PROCEDURE backups
@paths varchar(255)
AS
backup database ticket to disk= @paths with init
GO
这个是我的存储过程。调用方式如下:
if saved.Execute
then
path:=saved.FileName;
dm.DATAM.adp.Close;
dm.DATAM.adp.Parameters.ParamByName('@paths').Value:=''+path+'';
dm.DATAM.adp.ExecProc;
结果报错:说什么我的存储过程HAS TOO MANY ARGUMENT SPECIFIED
如果我把存储过程里面的参数去掉 ,用一个死的路径,它就可以调用成功,为什么呢????
@paths varchar(255)
AS
backup database ticket to disk= @paths with init
GO
这个是我的存储过程。调用方式如下:
if saved.Execute
then
path:=saved.FileName;
dm.DATAM.adp.Close;
dm.DATAM.adp.Parameters.ParamByName('@paths').Value:=''+path+'';
dm.DATAM.adp.ExecProc;
结果报错:说什么我的存储过程HAS TOO MANY ARGUMENT SPECIFIED
如果我把存储过程里面的参数去掉 ,用一个死的路径,它就可以调用成功,为什么呢????
另外dm.DATAM.adp.Parameters.ParamByName('@paths').Value:=''+path+'';
改成dm.DATAM.adp.Parameters.ParamByName('@paths').Value:=path;
delphi的bug!
试试!
CREATE PROCEDURE backups
@paths varchar(255)
AS
exec('backup database ticket to disk='+ @paths+' with init')
GO
DISK='C:\'+GETDATE()+'.BAK'
这样好象不可以通过, 应该怎么写呢 ?
为参数 Parameters下面的@Paths设置正确的类型!
或者 不要用varchar
as
declare @path varchar(20)
declare @rq varchar(10)
select @rq=convert(varchar(20),getdate(),120)
set @path='c:\'+@rq+'.bak'
print 'backup database boss001 to disk='''+@path+''''
exec('backup database boss001 to disk='''+@path+'''')
go