程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Unix Shell_Shell調用SQLPlus簡介(案例),shell_shellsqlplus

Unix Shell_Shell調用SQLPlus簡介(案例),shell_shellsqlplus

編輯:Oracle教程

Unix Shell_Shell調用SQLPlus簡介(案例),shell_shellsqlplus


2014-06-20 BaoXinjian

一、摘要


如果在Oracle EBS中開發Unix Shell,必定會涉及到在Shell中調用PLSQL,在Shell調用PLSQL一般是通過SQLPlus這個工具

關於SQLPlus需明白SQLPlus的登錄方式和常用命令,具體的在另文介紹SQLPlus的用法

1. SQLPlus的登錄方式

sqlplus [ [<option>] [<logon>] [<start>] ]
           <option> 為: [-C <version>] [-L] [-M "<options>"] [-R <level>] [-S]

  • -C <version>     將受影響的命令的兼容性設置為<version> 指定的版本。該版本具有"x.y[.z]" 格式。例如, -C 10.2.0
  • -L                      只嘗試登錄一次, 而不是在出錯時再次提示。
  • -M "<options>"  設置輸出的自動 HTML 標記。選項 的格式為:HTML [ON|OFF] [HEAD text] [BODY text] [TABLE text] [ENTMAP {ON|OFF}] [SPOOL {ON|OFF}] [PRE[FORMAT] {ON|OFF}]
  • -R <level>         設置受限模式, 以禁用與文件系統交互的,SQL*Plus 命令。級別可以是 1, 2 或 3。最高限制級別為 -R 3, 該級別禁用與文件系統交互的所有用戶命令。
  • -S                     設置無提示模式, 該模式隱藏, 命令的 SQL*Plus 標幟, 提示和回顯的顯示。

2. 登錄SQLPlus的基本命令

  • SQL> show all --查看所有68個系統變量值
  • SQL> show user --顯示當前連接用戶
  • SQL> show error   --顯示錯誤
  • SQL> set heading off --禁止輸出列標題,默認值為ON
  • SQL> set feedback off --禁止顯示最後一行的計數反饋信息,默認值為"對6個或更多的記錄,回送ON"
  • SQL> set timing on --默認為OFF,設置查詢耗時,可用來估計SQL語句的執行時間,測試性能
  • SQL> set sqlprompt "SQL> " --設置默認提示符,默認值就是"SQL> "
  • SQL> set linesize 1000 --設置屏幕顯示行寬,默認100
  • SQL> set autocommit ON --設置是否自動提交,默認為OFF
  • SQL> set pause on --默認為OFF,設置暫停,會使屏幕顯示停止,等待按下ENTER鍵,再顯示下一頁
  • SQL> set arraysize 1 --默認為15
  • SQL> set long 1000 --默認為80

3. SQLPlus語法

語法結構與PLSQL基本一致,略過

 

二、案例


1. 最簡單Shell調用SQLPlus的方法

Step1. 代碼

1 #!/bin/bash
2 sqlplus -S /nolog > result.log <<EOF
3 set heading off feedback off pagesize 0 verify off echo off
4 conn apps/apps
5 insert into bxj_sqlplus_test values (sysdate, 'bxjsqlplus1.sh', null);
6 exit
7 EOF

Step2. 執行

>. ./bxjshellsql1.sh

Step3. 結果

 

2.1 把SQLPlus中的值傳遞給Shell方法一

Step1. 代碼

 1 #!/bin/bash
 2 VALUE=`sqlplus -S /nolog <<EOF
 3 set heading off feedback off pagesize 0 verify off echo off numwidth 4
 4 conn apps/apps
 5 select count(*) from bxj_sqlplus_test;
 6 exit
 7 EOF`
 8 if [ "$VALUE" -gt 0 ]; then
 9   echo "The number of rows is $VALUE."
10   exit 0
11 else
12   echo "There is no row in the table."
13 fi

Step2. 執行

>. ./bxjshellsql2.sh

Step3. 結果

2.2 把SQL Plus中的值傳遞給Shell方法二

Step1. 代碼

 1 #!/bin/bash
 2 sqlplus -S /nolog > result.log <<EOF
 3 set heading off feedback off pagesize 0 verify off echo off numwidth 4
 4 conn apps/apps
 5 col coun new_value v_coun
 6 select count(*) coun from bxj_sqlplus_test;
 7 exit v_coun
 8 EOF
 9 VALUE="$?"
10 echo "The number of rows is $VALUE."

Step2. 執行

>. ./bxjshellsql3.sh

Step3. 結果

 

3. 把Shell中的值傳遞給SQLPlus

Step1.  代碼

1 #!/bin/bash
2 COMMENTS="$1"
3 sqlplus -S apps/apps <<EOF
4 insert into bxj_sqlplus_test values (sysdate, 'bxjsqlplus4.sh', '$COMMENTS');
5 exit
6 EOF

Step2. 執行

>. ./bxjshellsql4.sh

Step3. 結果

 

 ********************作者: 鮑新建********************

 

 

 參考: 網絡資料http://www.blogjava.net/xzclog/archive/2010/04/01/317151.html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved