select語句中用變量參數作表名-動態sql語句基本語法

動態sql語句基本語法    
   
  1   :普通SQL語句可以用Exec執行    
   
  eg:       Select   *   from   tableName    
                    Exec('select   *   from   tableName')    
                    Exec   sp_executesql   N'select   *   from   tableName'         --   請注意字符串前一定要加N    
   
  2:字段名,表名,數據庫名之類作爲變量時,必須用動態SQL    
   
  eg:        
  declare   @fname   varchar(20)    
  set   @fname   =   'FiledName'    
  Select   @fname   from   tableName                             --   錯誤,不會提示錯誤,但結果爲固定值FiledName,並非所要。    
  Exec('select   '   +   @fname   +   '   from   tableName')           --   請注意   加號前後的   單引號的邊上加空格    
   
  當然將字符串改成變量的形式也可    
  declare   @fname   varchar(20)    
  set   @fname   =   'FiledName'   --設置字段名    
   
  declare   @s   varchar(1000)    
  set   @s   =   'select   '   +   @fname   +   '   from   tableName'    
  Exec(@s)                                 --   成功    
  exec   sp_executesql   @s       --   此句會報錯    
   
   
   
  declare   @s   Nvarchar(1000)     --   注意此處改爲nvarchar(1000)    
  set   @s   =   'select   '   +   @fname   +   '   from   tableName'    
  Exec(@s)                                 --   成功            
  exec   sp_executesql   @s       --   此句正確    
   
  3.   輸出參數    
  declare   @num   int,    
                  @sqls   nvarchar(4000)    
  set   @sqls='select   count(*)   from   tableName'    
  exec(@sqls)    
  --如何將exec執行結果放入變量中?    
   
  declare   @num   int,    
                                @sqls   nvarchar(4000)    
  set   @sqls='select   @a=count(*)   from   tableName   '    
  exec   sp_executesql   @sqls,N'@a   int   output',@num   output    
  select   @num    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章