存储过程传值问题

laichunlin 2010-09-16 12:28:58
create proc exportTableData
@db varchar(50),
@dt varchar(50)
as
begin
--允许配置高级选项
exec sp_configure 'show advanced options',1
--重新配置
reconfigure
exec sp_configure 'xp_cmdshell',1
reconfigure
--执行想要的xp_cmdshell语句
exec master..xp_cmdshell 'bcp @db..@dt out f:\dt1.bak -c -U"sa" -P"sa" -S.'
--用完后,要记得将xp_cmdshell禁用(出于安全考虑)
--允许配置高级选项
exec sp_configure 'show advanced options',1
--重新配置
reconfigure
--禁用xp_cmdshell
exec sp_configure 'xp_cmdshell',0
--重新配置
reconfigure
end

但很明显
exec master..xp_cmdshell 'bcp @db..@dt out f:\dt1.bak -c -U"sa" -P"sa" -S.'
这句话中的@db 和@dt不是传过来的值而是当字符串用。

如果这样写 那是错的:
exec master..xp_cmdshell 'bcp '+@db+'..'+@dt+' out f:\dt1.bak -c -U"sa" -P"sa" -S.'

请问如何才能让@db 和@dt获取传过来的值?

小弟在线等!
...全文
61 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
laichunlin 2010-09-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sqlcenter 的回复:]
SQL code
declare @cmd varchar(1000)
set @cmd = 'bcp '+@db+'..'+@dt+' out f:\dt1.bak -c -U"sa" -P"sa" -S.'

exec master..xp_cmdshell @cmd
[/Quote]

正解,结贴了!
laichunlin 2010-09-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sqlcenter 的回复:]
SQL code
declare @cmd varchar(1000)
set @cmd = 'bcp '+@db+'..'+@dt+' out f:\dt1.bak -c -U"sa" -P"sa" -S.'

exec master..xp_cmdshell @cmd
[/Quote]

先谢谢你,我试试!
SQLCenter 2010-09-16
  • 打赏
  • 举报
回复
declare @cmd varchar(1000)
set @cmd = 'bcp '+@db+'..'+@dt+' out f:\dt1.bak -c -U"sa" -P"sa" -S.'

exec master..xp_cmdshell @cmd

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧