這是我一開始寫的存儲過程:
create or replace procedure proc_test()
is
--變量區域
--sql腳本
v_sql varchar2(2000) := '';
--記錄學生數量
v_num number;
begin
--執行區域
-- execute immediate用法1:立刻執行sql語句
v_sql := 'create or replace view myview as select id,name from student';
execute immediate v_sql;
dbms_output.put_line('創建視圖成功');
-- execute immediate用法2:立刻執行sql語句,並賦值給某個變量
v_sql := 'select count(1) from student';
execute immediate v_sql into v_num;
dbms_output.put_line('student表中一共有'||v_num||'條記錄');
-- execute immediate用法3:帶參數的sql
v_sql:='select * from student t where t.name=:1 and t.age=:2';
execute immediate v_sql using 'yyy01',11;
dbms_output.put_line('執行完了查詢結果');
end proc_test;
執行的時候報錯:編譯后錯誤提示為pls-00103
百度不思其解,最后經過自己的摸索,既然沒有參數,就不要加括號了。最終去掉括號就執行成功了。
create or replace procedure proc_test
is
--變量區域
--sql腳本
v_sql varchar2(2000) := '';
--記錄學生數量
v_num number;
begin
--執行區域
-- execute immediate用法1:立刻執行sql語句
v_sql := 'create or replace view myview as select id,name from student';
execute immediate v_sql;
dbms_output.put_line('創建視圖成功');
-- execute immediate用法2:立刻執行sql語句,並賦值給某個變量
v_sql := 'select count(1) from student';
execute immediate v_sql into v_num;
dbms_output.put_line('student表中一共有'||v_num||'條記錄');
-- execute immediate用法3:帶參數的sql
v_sql:='select * from student t where t.name=:1 and t.age=:2';
execute immediate v_sql using 'yyy01',11;
dbms_output.put_line('執行完了查詢結果');
end proc_test;