我在存储过程(程序包)中的删除操作遇到问题

时间:2018-12-20 12:07:46

标签: oracle stored-procedures plsql

我在这里面临一个问题。我有一个表Products,其中有名为prod_trkg_tran_idcntr_nbr等的列。我还有两个表instance1instance2,其中也包含{{1} }和prod_trkg_tran_id,它们有一行数据,每行都有相同的cntr_nbr。我在Oracle SQLDeveloper中运行了如下查询。它工作正常,并从cntr_nbr中删除了一行。你能解释一下吗?

但是当我在SP中尝试通过分配以下内容时:

prod_trkg_tran

并称为声明包含的方法p_where_clause:= 'WHERE t.prod_trkg_tran_id in ( select distinct tp82.PROD_TRKG_TAN_ID from instance_1 tp21 join instance_2 tp82 on tp21.cntr_nbr=tp82.cntr_nbr )'

delete_table

'DELETE FROM ' || p_table_name ||' t ' || p_where_clause; p_table_name,而prod_trkg_tran是我之前定义的那个。

如果运行此命令,则SP记录不会从p_where_clause中删除。

理想情况下,它应该像在SQLDeveloper中尝试的那样删除。你能解释一下吗?

prod_trkg_tran

1 个答案:

答案 0 :(得分:0)

执行模式/用户没有删除或选择上述表的权限时,这很可能是授予问题。

如果您的用户具有DBA特权,则在使用SQL Developer时不会遇到此错误,但是存储过程却会。

在您的情况下,您的表可能是另一个架构表的同义词,并且您可能没有在这些表上的授权。

请确保您有足够的赠款。

顺便问一下,您面临的错误是什么?