sqlserver 只有函數和擴展存儲過程才能從函數內部執行


一個SQLServer的自定義函數中調用一個自定義的存儲過程,執行此函數后發出如下提示:“只有函數和擴展存儲過程才能從函數內部執行"。
 原因:函數只能使用簡單的sql語句,邏輯控制語句,復雜一點的存儲過程是不能調用的,在函數里也不能使用execute  sp_executesql  或者execute 。解決方法把函數改為存儲過程,然后在另一個存儲過程中象調用函數一樣使用此存儲過程就可以了。
 下面是一個存儲過程調用另一個存儲過程的實例,有參數傳遞的。
 --存儲過程sp_B  
  create  proc  sp_B  
  @A  int  ,    
  @B  int  ,   
  @C  int  output   
  AS  
   
  set  @C  =  @A  +  @B  
  go   
   
  --存儲過程p_A  
  create  proc  sp_A   
  @A  int  ,    
  @B  int   
  as   
  declare   @C  int   
  exec  sp_B  @A  ,  @B  ,  @C  output   
  print  @C   
  go   
  --測試
  exec  sp_A   3  ,  5  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM