今天發現原來function內是不能使用exec()和非擴展存儲過程的

在別人的博客中發現了一個好東西,是coalesce(),作者把它用來透視數據。但是他的用法需要先定義一個變量,再運行一條select語句,最後再運行另一條select語句。我嫌麻煩,想寫在一個function內隨時調用,然後在其他地方用做子查詢。

但很遺憾的是,create function內是不能寫exec或exec sp_executesql的,只能運行用戶自己定義的擴展存儲過程。所以只好作罷。

另外,子查詢也是不能調用存儲過程的,所以這個好東西只能用來實現它最原始的用途了:返回參數中第一個非空項。

比如

coalesce(null,null,1,2) --此語句返回1

雖然SQL Server很強大好用,但有時候這一類“內核級”限制還是難免的。期待微軟投入更多的開發力量,把SQL Server打造的更強大。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章