在Oracle中从一个存储过程调用另一个存储过程

在Oracle中从一个存储过程调用另一个存储过程,oracle,stored-procedures,Oracle,Stored Procedures,在Oracle数据库中 假设有两个存储过程 存储过程sp1正在调用另一个存储过程sp2 问题是: 被调用的sp2是否能够访问sp1的temp表?我想你的意思是:数据库中有tmp表,sp1填充该表,sp2是否能够访问(读取或更改)该数据 是的,会的。(当然,如果sp1在sp2调用之前没有“提交”) Oracle临时表用于存储会话或事务期间的数据。 Sp1和sp2都在同一个会话中工作。@KOMapOB。。感谢您的回答……我对此有疑问……如果sp1在sp2调用之前有commit,并且temp tabl

在Oracle数据库中

假设有两个存储过程
存储过程
sp1
正在调用另一个存储过程
sp2

问题是:


被调用的
sp2
是否能够访问
sp1的
temp
表?

我想你的意思是:数据库中有tmp表,sp1填充该表,sp2是否能够访问(读取或更改)该数据

是的,会的。(当然,如果sp1在sp2调用之前没有“提交”)

Oracle临时表用于存储会话或事务期间的数据。
Sp1和sp2都在同一个会话中工作。

@KOMapOB。。感谢您的回答……我对此有疑问……如果sp1在sp2调用之前有commit,并且temp table有on commit PREVEN rows子句……。在这种情况下……sp2是否能够访问sp1的全局temp table数据?“PREVEN rows”是非常重要的词)。如果您的表包含此子句,则在会话结束后将删除数据。因此,sp1中的“commit”不会删除它,sp2将能够访问此数据。如果您的表没有此子句,或者您的表有“ON commit delete ROWS”子句,则数据将在“commit”之后删除,sp2将不满意。