我想打电话给在数据库链接的存储过程。 该代码看起来是这样的:
declare
symbol_cursor package_name.record_cursor;
symbol_record package_name.record_name;
begin
symbol_cursor := package_name.function_name('argument');
loop
fetch symbol_cursor into symbol_record;
exit when symbol_cursor%notfound;
-- Do something with each record here, e.g.:
dbms_output.put_line( symbol_record.field_a );
end loop;
CLOSE symbol_cursor;
当我运行这个来自同一个数据库实例和模式其中package_name属于我能够运行正常的。 然而,当我运行这个在数据库链接,(与所需修改的存储过程的名称等),我得到一个Oracle错误:ORA-24338:语句句柄不执行。
这个代码在DBLINK的修改后的版本是这样的:
declare
symbol_cursor package_name.record_cursor@db_link_name;
symbol_record package_name.record_name@db_link_name;
begin
symbol_cursor := package_name.function_name@db_link_name('argument');
loop
fetch symbol_cursor into symbol_record;
exit when symbol_cursor%notfound;
-- Do something with each record here, e.g.:
dbms_output.put_line( symbol_record.field_a );
end loop;
CLOSE symbol_cursor;