代码之家  ›  专栏  ›  技术社区  ›  Astora

Oracle-如何在不被问及价值的情况下使用?[副本]

  •  -1
  • Astora  · 技术社区  · 3 年前

    基本上,我不想被问到这样的价值:

    SQL> select &test from dual;
    Enter value for test:
    

    我只想申报 &test 沿着剧本,类似的东西:

    &test varchar2(100):= 'some value'; --of course, this don't work.
    
    1 回复  |  直到 3 年前
        1
  •  1
  •   Littlefoot    3 年前

    处决

    SQL> set define off
    

    在运行代码之前。


    SQL> select '&test' from dual;
    
    '&TES
    -----
    &test
    
    SQL>
    

    如果要“声明”它,请使用 var :

    SQL> var test varchar2(200);
    SQL> exec :test := 'some value';
    
    PL/SQL procedure successfully completed.
    
    SQL> print test
    
    TEST
    ----------------------------------------------------------------------------------------------------
    some value
    
    SQL>
    

    在动态SQL中:我不会锁定任何人,但是-我会更改我的密码。

    SQL> connect scott/tiger
    Connected.
    SQL> var test varchar2(200);
    SQL> exec :test := 'lion';
    
    PL/SQL procedure successfully completed.
    
    SQL> print test
    
    TEST
    ----------------------------------------------------------------------------------------------------
    lion
    
    SQL> begin
      2    execute immediate 'alter user scott identified by ' || :test;
      3  end;
      4  /
    
    PL/SQL procedure successfully completed.
    
    SQL> connect scott/tiger
    ERROR:
    ORA-01017: invalid username/password; logon denied
    
    
    Warning: You are no longer connected to ORACLE.
    SQL> connect scott/lion
    Connected.
    SQL>