我正在尝试插入其架构是动态的数据,因为在用户输入架构名称时。出于某种原因,我得到 if(tempMaxDate != null && tempMinDate != null) {
xScale.domain()[0] = tempMinDate;
xScale.domain()[1] = tempMaxDate;
}
,即使表格在正确的架构中。
以下是代码:
ORA-000942: table doesn't exist
知道我犯了什么错误吗? 提前干杯:)
答案 0 :(得分:0)
user
很可能没有privilege
访问其他架构中的表格。
您需要授予SELECT
权限。
GRANT SELECT ON table_name TO username;
将所需的table_name
和username
放入正在执行 SELECT 的用户。
答案 1 :(得分:0)
通过互联网进行一些研究和漫步之后,这就是我发现的。看来我需要以稍微不同的方式声明模式和表名变量。为何此解决方案有效?不知道。
declare
l_schema_name all_tables.owner%type := '&1';
l_ext_files_names varchar2(4000) := '&2';
l_table_name all_tables.table_name%type := 'FILES_TBL';
l_int_files_names varchar2(4000);
c_file_name sys_refcursor;
begin
open c_file_name for 'select file_names from '||l_schema_name||'.'||l_table_name;
fetch c_file_name into l_int_files_names;
if c_file_name%notfound then
execute immediate 'insert into '||l_schema_name||'.'||l_table_name||' (file_names, entry, status) values ('''||l_ext_files_names||''', sysdate, ''done'')';
commit;
elsif (l_int_files_names <> l_ext_files_names) then
execute immediate 'insert into '||l_schema_name||'.'||l_table_name||' (file_names, entry, status) values ('''||l_ext_files_names||''', sysdate, ''done'')';
commit;
else
dbms_output.put_line ('Already there.');
end if;
exception when others then
dbms_output.put_line ('Some errors.');
end;
/