我在这里面临一个问题。我有一个表Products
,其中有名为prod_trkg_tran_id
和cntr_nbr
等的列。我还有两个表instance1
和instance2
,其中也包含{{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
答案 0 :(得分:0)
执行模式/用户没有删除或选择上述表的权限时,这很可能是授予问题。
如果您的用户具有DBA特权,则在使用SQL Developer时不会遇到此错误,但是存储过程却会。
在您的情况下,您的表可能是另一个架构表的同义词,并且您可能没有在这些表上的授权。
请确保您有足够的赠款。
顺便问一下,您面临的错误是什么?