Oracle中怎樣一次執行多條sql語句
有時我們需要一次性執行多條sql語句,而用來更新的sql是根據實際情況用代碼拼出來的
解決方案是把sql拼成下面這種形式:
begin
update TB_VG set seq = 1, vessel_id = 'Jin14', vessel_type = 'TRACK' where batch_number = '20837' and train_id = '0233086';
update TB_VG set seq = 2, vessel_id = 'Jin14', vessel_type = 'TRACK' where batch_number = '20992' and train_id = '0233110';
end;
總結如下:
以begin開始,以end;結尾(end后的分號不能省),中間的每個sql語句要以分號;結尾
在實際編碼中,發現即使這樣也會有錯誤發生,把sql語句中的換行符替換成空格就可以了
比較穩妥的編碼方式是:
1、以正常的方式編寫sql,根據閱讀與編寫的需要,中間肯定會有換行符
2、在執行之前進行替換:strSql = *e("r\n", " ").Replace('\n', ' ');
如果不采用這種方式,可能的異常有:
ORA-00933: SQL 命令未正確結束(如果sql沒有以分號結尾)
ORA-00911: 無效字符(如果未加begin 和 end)
ORA-06550: 第x行, 第xxx列: PLS-00103: 出現符號 "end-of-file"在需要下列之一時:。。(如果end后面沒有;分號)
ORA-06550: 第x行, 第xxx列: PLS-00103: 出現符號 ""在需要下列之一時:。。(語句之間有換行符)
怎樣看oracle查詢語句執行計劃
SQLPLUS的AutoTrace是分析SQL的執行計劃,執行效率的一個非常簡單方便的工具,在絕大多數情況下,也是非常有用的工具。
1。如何設置和使用AUTOTRACE SQL> connect / as sysdba SQL> @?/rdbms/admin/utlxplan。
sql Table created。 SQL> create public synonym plan_table for plan_table; Synonym created。
SQL> grant select,update,insert,delete on plan_table to public; Grant succeeded。 SQL> @?/sqlplus/admin/plustrce。
sql SQL>grant plustrace to public。 2。
理解和使用AutoTrace 對于SQL 調整,使用Autotrace是最簡單的方法了,我們只需要做: SQL>SET AUTOTRACE ON 我們就可以看到我們SQL的執行計劃,執行成本(PHYSICAL READ/CONSISTENT READ。 。
。) 加上SET Timing On或者Set Time On,我們可以得到很多我們需要的數據。
然后在toad里面對某一條sql語句按下Ctrl+e就可以看到這條語句的執行計劃了。
如何獲取或記錄Oracle語句執行時間
很多情況下我們需要獲取或記錄Oracle語句執行時間,其實簡單的方法就能實現,具體代碼如下: OracleE語句的執行時間需要使用 SET TIMING ON,例如: [oracle@jw ~]$ sqlplus "/as sysdba"SQL*Plus: Release 9。
2。0。
4。0 - Production on 星期二 8月 28 16:59:43 2007Copyright (c) 1982, 2002, Oracle Corporation。
All rights reserved。連接到: Oracle9i Enterprise Edition Release 9。
2。0。
4。0 - ProductionWith the Partitioning, Oracle Label Security, OLAP and Oracle Data Mining optionsJServer Release 9。
2。 0。
4。0 - ProductionSQL> set timing on;SQL> select count(*) from tab;COUNT(*)----------2447已用時間: 00: 00: 00。
12SQL>。
如何在Oracle中一次執行多條sql語句
寫個plsql 代碼塊,把insert語句包起來就可以了,參考:
BEGIN
DELETE FROM SYSROLEOPENR WHERE ROLEID = 2;
INSERT INTO SYSROLEOPENR
(PKID, ROLEID, OPERID)
SELECT SYSROLEOPENR_PKID_*L, '2' ROLEID, OPERID
FROM SYSMODULEOPER
WHERE OPERCODE = '300090010';
INSERT INTO SYSROLEOPENR
(PKID, ROLEID, OPERID)
SELECT SYSROLEOPENR_PKID_*L, '2' ROLEID, OPERID
FROM SYSMODULEOPER
WHERE OPERCODE = '300090020';
INSERT INTO SYSROLEOPENR
(PKID, ROLEID, OPERID)
SELECT SYSROLEOPENR_PKID_*L, '2' ROLEID, OPERID
FROM SYSMODULEOPER
WHERE OPERCODE = '300090050';
END;
如何查看Oracle正在執行的sql語句
用這個:
SELECT * oracleID,
*me 登錄Oracle用戶名,
*#,
spid 操作系統ID,
paddr,
sql_text 正在執行的SQL,
*e 計算機名
FROM v$process a, v$session b, v$sqlarea c
WHERE * = *
AND *_hash_value = *_value
轉載請注明出處華閱文章網 » oracle執行語句