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

Posted

技术标签:

【中文标题】在 Oracle 中从另一个存储过程调用一个存储过程【英文标题】:Calling one stored procedure from another in Oracle 【发布时间】:2012-04-17 05:04:54 【问题描述】:

在Oracle数据库中,

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

问题是:

被调用的sp2 能否访问sp1's temp 表?

【问题讨论】:

【参考方案1】:

我想你的意思是:数据库中有 tmp 表,sp1 填表,sp2 就可以访问(读取或更改)这些数据?

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

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

【讨论】:

@KOMapOB.. 感谢您的回答....我对此有疑问...如果 sp1 在 sp2 调用之前已提交并且临时表已提交保留行子句..... ..在这种情况下..sp2能否访问sp1的全局临时表数据? “保留行”是非常重要的词)。如果你的表有这个子句,那么会话结束后数据将被删除。所以 sp1 中的“提交”不会删除它,并且 sp2 将能够访问这些数据。 如果你的表没有这个子句,或者你的表有“ON COMMIT DELETE ROWS”子句,那么“commit”后数据会被删除,sp2会不高兴。

以上是关于在 Oracle 中从另一个存储过程调用一个存储过程的主要内容,如果未能解决你的问题,请参考以下文章

从另一个存储过程 oracle 调用存储过程

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

如何在没有临时表的情况下从另一个存储过程调用存储过程(带参数)

从另一个存储过程调用具有交叉应用的存储过程会产生错误 SQL 服务器

MySQL 从另一个存储过程调用存储过程

从另一个存储过程调用的存储过程中获取第一个结果集