8.0.5.不支持execute immediate,要oracle 8i以上才可以.
在8.0.5只能用DBMS_SQL包来实现

解决方案 »

  1.   

    给你个例子参考一下:
    create or replace procedure insertstudent(
    p_empno in char,p_empname in varchar2,p_credit in integer,p_address in varchar2)
    as
    v_cursorid integer;
    v_sqlstatement varchar2(100);
    v_rows_processed integer;
    begin
       -- 为处理打开光标
       v_cursorid := DBMS_SQL.OPEN_CURSOR;
       -- 确定SQL字符串
       v_sqlstatement := 'insert into student values(:empno,:empname,:credit,:address)';
       -- 分析SQL字符串
       DBMS_SQL.PARSE(v_cursorid,v_sqlstatement,DBMS_SQL.NATIVE);
       --绑定变量p_empno到:empno
       DBMS_SQL.BIND_VARIABLE(v_cursorid,':empno',p_empno);
       --绑定变量p_empname到:empname
       DBMS_SQL.BIND_VARIABLE(v_cursorid,':empname',p_empname);
       --绑定变量p_credit到:credit
       DBMS_SQL.BIND_VARIABLE(v_cursorid,':credit',p_credit);
       --绑定变量p_address到:address
       DBMS_SQL.BIND_VARIABLE(v_cursorid,':address',p_address);
       -- 执行语句
       v_rows_processed := DBMS_SQL.EXECUTE(v_cursorid);
      -- 关闭光标
      DBMS_SQL.CLOSE_CURSOR(v_cursorid);
    exception
      when others then
      -- 关闭光标
      DBMS_SQL.CLOSE_CURSOR(v_cursorid);
    end;
      

  2.   

    能不能写出执行完sql语句以后怎么像变量中附值啊