就在pl/sql 能执行就行,只要让我看懂它是怎么定义,和怎么用的就行了

解决方案 »

  1.   

    [email protected]>declare 
      2               l_number number;
      3               l_number:=123;
      4               select * from emp where empno=:x using l_number;
      5  /
    未说明结合变量"X"给指点一下这个错误。
      

  2.   

    declare 
         l_number number:=123;
    str varchar2(50);
    begin
    str:='select * from emp where empno=:x;
    execute immediate str into ... using l_number;
    end;
    /
      

  3.   

    [email protected]>declare 
      2                    type rc is ref cursor;
      3                    l_rc rc;
      4                     l_dummy all_objects.object_name%type;
      5                     l_start number default dbms_utility.get_time;
      6                     i number;
      7                     begin
      8                        for i in 1 .. 1000
      9                        loop
     10                           open l_rc for 
     11                            'select object_name 
     12                            from all_objects
     13                            where object_id=:X'
     14                            using i;
     15                            fetch l_rc into l_dummy;
     16                          close l_rc;
     17                        end loop;
     18                        dbms_output.put_line
     19                        (round((dbms_utility.get_time - l_start)/100,2)||
     20                       'seconds...');
     21                     end ;
     22  /
                              'select object_name
                              *
    错误位于第11行:
    ORA-06550: 行11、列27:
    PLS-00103: 出现符号"select object_name
    from all_objects
    "在需要下列之一时:
    select这个错误是什么原因,我在书上抄的关于绑定变量的例子怎么通不过
      

  4.   

    declare 
    type rc is ref cursor;
    l_rc rc;
    l_dummy all_objects.object_name%type;
    _start number default dbms_utility.get_time;
    i number;
    begin
    for i in 1 .. 1000 loop
    open l_rc for 
    'select object_name 
    from all_objects
    where object_id='||i;
    fetch l_rc into l_dummy;
    close l_rc;
    end loop;
    dbms_output.put_line
    (round((dbms_utility.get_time - l_start)/100,2)||'seconds...');
    end ;
    /
      

  5.   

    You need define the variabe before use it ab below:variable x varchar2(10);And then use the variable with :x
      

  6.   

    [email protected]>declare
      2   l_number number;
      3   begin
      4      for i in 1 .. 10000
      5      loop
      6         l_number:=dbms_random.random;
      7         execute immediate
      8           'insert into t values(:x1,:x2,:x3,:x4)'
      9             using l_number,l_number,l_number,l_number;
     10      end loop;
     11     commit;
     12   end;
     13  /
           execute immediate
                   *
    错误位于第7行:
    ORA-06550: 行7、列16:
    PLS-00103: 出现符号"IMMEDIATE"在需要下列之一时:
    :=.(@%;
      

  7.   

    declare
    l_number number;
    begin
    for i in 1..10000
    loop
    l_number:=dbms_random.random;
     execute immediate
     'begin 
      insert into t values(:x1,:x2,:x3,:x4);
      end;'
    using l_number,l_number,l_number,l_number;
    end loop;
    commit;
    end;
    /
    IMMEDIATE 只能出现在8I以上版本
      

  8.   

    我是8.05的,用system/manager 进的sql plus 的
      

  9.   

    用了绑定,ORACLE会采用上次分析过的SQL执行计划,提高效率。