alter proc ProductSearch
(  
  @type nvarchar(50),
  @KeyWord nvarchar(255)   
)
as
EXEC('select *,bookcost*bookRebate as Nowcost from book where '+ @type+' like ''%'+ @KeyWord+'%''')
go  
为什么存储过程要用EXEC
什么情况下才用EXEC
说明理由 重分奖赏 顶者1分

解决方案 »

  1.   

    有参数拼接的时候
    也就是常说的
    动态sql的时候
    用exec
      

  2.   

    “什么情况下才用EXEC”需要拼接 SQL 语句才能获得想要的结果的时候就可以用,就是动态 SQL 解决问题
      

  3.   

    你所谓的动态是什么呢
    有人说  只有当字段传进来的时候才要用exec  不是字段 加布加 都一样    请弄清我的问题 然后回答
      

  4.   

     
    可以这么说,就是每次查询结果可能会由于表中的数据集情况而产生不同的结果。
    而传不传参数要看你SQL怎么写的了 
      

  5.   

    我是问存储过程里面什么时候用EXEC   
      

  6.   

    你上面已经列出一种形式了撒
    执行字符串的时候用EXEC
    执行存储过程的时候用EXEC
      

  7.   

    动态SQL时,较为复杂的SQL。
    存储过程也可exec 存储过程名 参数 调用。
      

  8.   

    EXECUTE执行 Transact-SQL 批中的命令字符串、字符串或执行下列模块之一:系统存储过程、用户定义存储过程、标量值用户定义函数或扩展存储过程。1. 为什么存储过程要用EXEC ?
       语法使然规则而已。
       
    2. 什么情况下才用EXEC ?
       非动态不能解决的时候  引用2楼水哥这个经典。
      

  9.   


     执行参数化查询(当from是某个对象是参数时..)