如何将值从shell传递给plsql块

时间:2017-05-16 08:55:51

标签: linux shell plsql sqlplus

我在ebs中创建了一个新用户:

user_name=$(echo $1 | cut -d':' -f2)
password=$(echo $2 | cut -d':' -f2)

sqlplus -s /NOLOG << EOF
connect apps/apps@<IP>:1521/VIS

declare
    v_user_name varchar2(30):=$user_name;
    v_password varchar2(30):=$password;
begin
    fnd_user_pkg.createuser (
        x_user_name => v_user_name,
        x_owner => null,
        x_unencrypted_password => v_password,
        x_session_number => null,
        x_start_date => sysdate,
        x_end_date => null,
        x_email_address => null
    );

    commit;

    DBMS_OUTPUT.put_line ('User:'||v_user_name||'Created Successfully');

exception
    when others then
        DBMS_OUTPUT.put_line ('Unable to create User due to'||SQLCODE||'
        '||SUBSTR(SQLERRM, 1, 100));

        rollback;
 end;
/

exit
EOF

我在分配行中收到错误如下。

  

v_password varchar2(30):= DEMO @ 123;                                  *

     

第3行的错误:

     

ORA-06550:第3行,第32栏:

     

PLS-00103:当期待其中一个时遇到符号“123”   以下内容:

     

@

     

符号“在”123“之前插入以继续。

     

将v_user_name赋值为$ user_name;

时的错误相同

如何将值从shell传递到pl / sql块?

0 个答案:

没有答案