楼上的方法是行不通的请查看联机帮助:
sp_executesql [@stmt =] stmt
[
    {, [@params =] N'@parameter_name  data_type [,...n]' }
    {, [@param1 =] 'value1' [,...n] }
]参数
[@stmt =] stmt包含 Transact-SQL 语句或批处理的 Unicode 字符串,stmt 必须是可以隐式转换为 ntext 的 Unicode 常量或变量。不允许使用更复杂的 Unicode 表达式(例如使用 + 运算符串联两个字符串)。不允许使用字符常量。如果指定常量,则必须使用 N 作为前缀。例如,Unicode 常量 N'sp_who' 是有效的,但是字符常量 'sp_who' 则无效。字符串的大小仅受可用数据库服务器内存限制。

解决方案 »

  1.   

    刚找到以前的一个问题,改天试试
    http://community.csdn.net/Expert/topic/3391/3391540.xml?temp=.4253961
      

  2.   

     回复人: zjcxc(邹建) ( ) 信誉:394  2004-9-20 17:14:39  得分: 20  
     --示例
    create proc p_qry
    @txt ntext 
    as
    declare @sql nvarchar(4000)
    set @sql='exec(@txt)'
    exec sp_executesql @sql,N'@txt ntext',@txt
    go

    --调用
    exec p_qry 'select re=1'
    go

    --删除测试
    drop proc p_qry

    /*--测试结果

    re          
    ----------- 
    1

    (所影响的行数为 1 行)

    --*/
    现在的问题是怎么把TEXT型传给这个过程呢,我要在过程里调过程
    用游标拿不出来,用SELECT @TXT =(SELECT TXT FROM TB1) 也不行