shell中调用sqlplus执行SQL文件并替换SQL中参数值

2022-04-27  本文已影响0人  马云生

实现shell中调用sqlplus执行SQL文件并替换SQL中参数值

第一种方法:

#!/bin/bash

.....(略)

CONN_STRING="" #数据库连接字符串   用户/密码@连接串

name="zhang"

sql_update="update.sql" #sql文件存在于此shell同一目录下,sql中两个参数:x_trg_no 和: name

sqlplus -s /nolog <<EOF!

     conn ${CONN_STRING}

    variable x_trg_no NUMBER

    variable name varchar2(50)

    exec :x_trg_no :=20

    exec : name :=${name} 

     @./${sql_update}

    disconnect

   quit

EOF! #这里必须在行首

第二种方法:

  ※通过调用SQL文件时后面直接给参数值,按照顺序在SQL中可以通过&1    &2 ・・・・・接参数

#!/bin/bash

.....(略)

CONN_STRING="" #数据库连接字符串   用户/密码@连接串

sql_update="update.sql" #sql文件存在于此shell同一目录下,sql中两个参数写成‘&1’ 和&2

sqlplus -s /nolog <<EOF!

     conn ${CONN_STRING}

     @./${sql_update}  zhang  20 

    disconnect 

     quit

EOF! #这里必须在行首

第三种方法:

脚本中定义

格式:define 标识符 = 值

 如: define n=12

 define s=’hello’ --是否加引号没有关系

通过加&引用 如: 

select &n from dual; 

select ‘&s’ from dual; --注意必须要加引号 

begin dbms_output.put_line('&s'); 

end; 

取消定义的方法是:undefine标识符

上一篇下一篇

猜你喜欢

热点阅读