SQLServer:只有函数和某些扩展存储过程才能从函数内部执行——原因:函数内不行执行存储过程

今天,我看想用动态拼接的方式。在函数中查询数据。(当然,要写的函数不重要。就不复制和截取全貌了)。

执行存储过程

 SELECT dbo. ufn_getICItemRule_0614('12021000001',1)

消息 557,级别 16,状态 2,第 2 行
只有函数和某些扩展存储过程才能从函数内部执行。


原来,我犯了常识性的错误。函数中不能调用存储过程。

函数只能使用简单的sql语句,逻辑控制语句,复杂一点的存储过程是不能调用的,在函数里也不能使用execute  sp_executesql  或者execut。

 

函数中为什么不能使用存储过程呢?经过百度以后,我豁然开朗。

原因

在函数内不能改变数据库的值。

函数是用于计算的。它是不能改变你原本的数据库。而存储过程比较复杂,那么它无法判定你是否改变了数据库。所以,就禁用了存储过程语句。

为了验证推测,在函数中写一条更新语句。

 

参考网址

posted @ 2022-07-12 11:05  陆陆无为而治者  阅读(1165)  评论(0编辑  收藏  举报