sqlserver 只有函数和扩展存储过程才能从函数内部执行
2015-08-27 11:32
393 查看
一个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
原因:函数只能使用简单的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
相关文章推荐
- SqlServer数据类型
- 人脸数据库汇总
- 怎么使用js调用后台数据库
- mysql5.6安装 mysql.slave_master_info表不存在的解决方法
- JDBC 连接 mysql数据库
- java 操作mongodb查询条件的常用设置
- Oracle- plsql developer如何查询SQL语句执行历史记录
- Oracle 批量导出 Sequence
- 数据库设计三大范式
- C#连接SQLite数据库
- mysql启用skip-name-resolve模式时出现Warning的处理办法
- localStorage, localforage, web sql三者的比较
- Sqlite 数据库存储
- MySQL中利用外键实现级联删除、更新
- mysql删除重复数据的sql
- mongodb的安装和简单实用以及32-bit servers don't have journaling enabled by default. Please use --journal 错误
- 认识mongoDB数据库
- sqoop导入数据到关系型数据库到hive
- H2数据库使用
- redis中SETEX和SET有什么区别?