編譯后錯誤提示為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;

執行的時候報錯:編譯后錯誤提示為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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM