把语句: 
EXEC   master..xp_cmdshell   'bcp   mydb..t_test   in   e:\test2.txt   -c   -S127.0.0.1   -Usa   -P03354991'
写在查询分析器里就可以执行,但如果我写成存储过程: 
CREATE PROCEDURE [dbo].[up_txt2sql] 
@string as nvarchar (500)
As
declare @sqlstr nvarchar(500)
set @sqlstr=@string
exec master..xp_cmdshell   @string
GO
然后在查询分析器里测试
exec up_txt2sql @string="   'bcp   mydb..t_test   in   e:\test2.txt    -c   -S127.0.0.1   -Usa   -P03354991' "
就不可以,提示:
1 ''bcp' 不是内部或外部命令,也不是可运行的程序
2 或批处理文件。
3 NULL
有人遇到过这个问题吗?

解决方案 »

  1.   

    alter PROCEDURE [dbo].[up_txt2sql] 
     @string as nvarchar (500)
    Asexec master..xp_cmdshell @string
    GOexec [up_txt2sql] 'bcp   mydb..t_test   in   e:\test2.txt   -c   -S127.0.0.1   -Usa   -P03354991'--这样呢?
      

  2.   

    exec up_txt2sql @string="   'bcp   mydb..t_test   in   e:\test2.txt    -c   -S127.0.0.1   -Usa   -P03354991' "--把双引号去掉试试
      

  3.   

    谢谢 xeqtr1982(HaN)。你写的可以执行的,但问题的关键是@string 不应该用双引号的 ,呵呵。
    问题是解决了,但我还是有问题啊,我是用程序调用并执行存储过程的,好像不行啊,我用的是VB.net.
    有人用过吗? 谢谢大家了!