Oracle 使用数据库链接执行变量
我有一个疑问:Oracle 使用数据库链接执行变量,oracle,Oracle,我有一个疑问: DECLARE VAR1 VARCHAR(100); BEGIN VAR1 :='INSERT INTO TAB1 (ID) VALUES(911197)'; EXECUTE IMMEDIATE VAR1; COMMIT; END; / 它将在没有错误的情况下执行(上面是一个简单的示例,在我的真实版本中,VAR1将从一个过程中提供) 我的问题是在下面的问题中,我想使用数据库链接在另一个数据库中执行VAR1,它给了我错误,正确的语法是什么 create p
DECLARE VAR1 VARCHAR(100);
BEGIN
VAR1 :='INSERT INTO TAB1 (ID) VALUES(911197)';
EXECUTE IMMEDIATE VAR1;
COMMIT;
END;
/
它将在没有错误的情况下执行(上面是一个简单的示例,在我的真实版本中,VAR1将从一个过程中提供)
我的问题是在下面的问题中,我想使用数据库链接在另一个数据库中执行VAR1,它给了我错误,正确的语法是什么
create public database link
alink
connect to
stack
identified by
flow
using 'server'
DECLARE VAR1 VARCHAR(100);
BEGIN
VAR1 :='INSERT INTO TAB1 (ID) VALUES(911197)';
EXECUTE IMMEDIATE VAR1@alink;
COMMIT;
END;
/
它将不起作用,我如何才能在另一个数据库中执行var1
编辑:
尝试此查询时,我出现以下错误:
create or replace synonym remote_dbms_sql for dbms_sql@sales;
declare
c number;
l_global_name varchar2(200);
begin
c := remote_dbms_sql.open_cursor();
remote_dbms_sql.parse( c,'INSERT INTO ID (CODE) VALUES(911197)', dbms_sql.native );
remote_dbms_sql.define_column( c, 1, l_global_name, 200 );
dbms_output.put_line( remote_dbms_sql.execute_and_fetch( c ) );
remote_dbms_sql.column_value( c, 1, l_global_name );
dbms_output.put_line( l_global_name );
remote_dbms_sql.close_cursor( c );
end;
/
Error:ORA-01007: variable not in select list
ORA-06512: at "SYS.DBMS_SQL", line 1673
应该是这个:
BEGIN
VAR1 :='INSERT INTO TAB1@alink (ID) VALUES(911197)';
EXECUTE IMMEDIATE VAR1;
COMMIT;
END;
您是否尝试过这个@DurgeshChaudhary,它给了我这个错误ORA-01007:变量不在选择列表中ORA-06512:在“SYS.DBMS_SQL”第1673行,原因是
您不能引用远程包常量,但是这个常数的实际值在两个数据库中大概是相同的。
你能不能也发布你尝试执行的新代码,在你尝试说链接后,对不起,我在你最后的评论中不明白@DurgeshChaudhary,但是请检查我的编辑,我不能使用这种方式,因为在我的真实场景中,我不知道数据库中有什么变量我确信它们是可执行的查询。我将在问题中解释我的场景是否适合为表创建同义词,例如为表创建或替换同义词remote_tab1tab1@sales;代码>?当然,您必须为每个可能在VAR1