在 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 中从另一个存储过程调用一个存储过程的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有临时表的情况下从另一个存储过程调用存储过程(带参数)