Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 使用数据库链接执行变量_Oracle - Fatal编程技术网

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