運行以下代碼
create or replace procedure copy_table(
from_table in out varchar2,
new_table_name in out varchar2
) is v varchar(4000);
begin
v :='create table new_table_name as select * from from_table';
execute immediate v;
end copy_table;
begin
copy_table(lalala, new_table);
end;
我得到了錯誤
begin
copy_table(lalala, new_table);
end;
Error report -
ORA-06550: line 2, column 12:
PLS-00357: Table,View Or Sequence reference 'LALALA' not allowed in this context
ORA-06550: line 2, column 1:
PL/SQL: Statement ignored
既然我已經有“lalala”表,如何正確呼叫程式?我的程式是否適用于處理現有表并創建一個新表?還是代碼錯了?
uj5u.com熱心網友回復:
您已將程序引數作為字串傳遞,而它們必須作為變數傳遞。此外,您的程序引數必須僅為 IN 而不是 IN OUT。所以你更新的代碼將是 -
create or replace procedure copy_table(
from_table in varchar2,
new_table_name in varchar2
) is v varchar(4000);
begin
v :='create table '|| new_table_name ||' as select * from '|| from_table;
execute immediate v;
end copy_table;
演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/478818.html
