我有这个问题:
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
答案 0 :(得分:0)
应该是这个:
BEGIN
VAR1 :='INSERT INTO TAB1@alink (ID) VALUES(911197)';
EXECUTE IMMEDIATE VAR1;
COMMIT;
END;