oracle執行sql
A. 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 = strSql.Replace("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: 出現符號 ""在需要下列之一時蠢頃:......(語句之間有換行符)
B. oracle怎麼直接執行sql語句
Oracle可以使用SQL Plus進行執行,但是可視化不夠,建議使用另外一個查詢輔助工具PLSQL Developer,使用PLSQL Developer工具裡面各種可視化都很好看出查詢出數據的結果以及可以用這個工具分析SQL的執行分析。
C. Oracle中如何定時執行一條SQL語句
通過網上查詢,找到一種方案,就是先在oracle裡面對要定時的sql寫成存儲過程,再用DBMS_scheler對存儲過程進行定時執行。
在資料庫中新建了一個表MY_JOB_TEST
在資料庫中新建了一個表MY_JOB_TEST
在資料庫中新建了一個表MY_JOB_TEST
在PLSQL中,執行下面語句模擬存儲過程的調用,執行後要點提交才有反應
[sql] view plain
BEGIN
INSERTINTOMY_JOB_TEST(NUM)VALUES(1);
END;
GrantCreateJobTo指定用戶名
SQL>CREATEORREPLACEPROCEDURE
JOB_TEST
BEGIN
INSERTINTOMY_JOB_TEST(NUM)VALUES(1);
END;
- (此處要執行存儲過程不能用exec JB_TEST,這種執行方式只能在命令行中使用)
SQL>BEGIN
DBMS_SCHEDULER.CREATE_JOB(
job_name=>'SCHEDULER_TEST',
job_type=>'STORED_PROCEDURE',
job_action=>'JOB_TEST',
start_date=>sysdate,
repeat_interval=>'FREQ=MINUTELY;INTERVAL=1');
END;
- 但是這樣子定時任務並不會執行。
SQL>SELECT*FROMUSER_SCHEDULER_JOBS;
- 此時我們可以看到enable的狀態是false的,因此我們需要去啟動定時任務
SQL>BEGIN
DBMS_SCHEDULER.ENABLE('SCHEDULER_TEST');
然後下面建立一個存儲過程JOB_TEST
(注意,這里用戶需要CREATE JOB許可權,可以用超級管理員用戶執行下面語句給指定用戶賦予該許可權)
[sql] view plain
[sql] view plain
使用DBMS_SCHEDULER進行定時,這里為每分鍾執行一次
[sql] view plain
我們可以用下面的命令查看一下scheler的狀態
[plain] view plain
[plain] view plain
dbms_scheler.enable('j_test'); --啟用jobs
dbms_scheler.disable('j_test'); --禁用jobs
dbms_scheler.run_job('j_test'); --執行jobs
dbms_scheler.stop_job('j_test'); --停止jobs
dbms_scheler.drop_job('j_test'); --刪除jobs
然後再查詢job的enable裝態,發現為true了。
然後查看MY_JOB_TEST表,發現每分鍾會往裡面添加記錄。
當需要修改定時任務或者調度的其他屬性時,可以用下面的
dbms_scheler.set_attribute('調度名','調度屬性','調度值');
至此,定時任務完成。
D. oracle如何執行sql腳本
你用的Oracle客戶端是什麼!之前用的是toad,選中你要執行的包或者存儲過程,然後右鍵「Execute」!
E. 如何在Oracle中一次執行多條sql語句
1、將你要執行的sql語句寫入一個txt文件中;
2、修改文件後綴為.sql文件;
3、使用 「source + 路徑+文件名」 註:
source與路徑之間有空格。
F. oracle執行一個動態的SQL如何執行
set serveroutput on
declare
n number;
sql_stmt varchar2(50);
t varchar2(20);
begin
execute immediate 'alter session set nls_date_format=''YYYYMMDD''';
t := 't_' || sysdate;
sql_stmt := 'select count(*) from ' || t;
execute immediate sql_stmt into n;
dbms_output.put_line('The number of rows of ' || t || ' is ' || n);
end;如果動態SQL語句 很長很復雜,則可用包裝.CREATE OR REPLACE PACKAGE test_pkg
IS
TYPE cur_typ IS REF CURSOR;
PROCEDURE test_proc (v_table VARCHAR2,t_cur OUT cur_typ);
END;
/CREATE OR REPLACE PACKAGE BODY test_pkg
IS
PROCEDURE test_proc (v_table VARCHAR2,t_cur OUT cur_typ)
IS
sqlstr VARCHAR2(2000);
BEGIN
sqlstr := 'SELECT * FROM '||v_table;
OPEN t_cur FOR sqlstr;
END;
END;
/在oracle中批量導入,導出和刪除表名以某些字元開頭的表spool c:\a.sql
select 'drop table ' || tname || ';' from tab where tname like 'T%';
spool off
@c:\a
G. 在ORACLE 中怎麼查看SQL 執行日誌
1、首先打開oracle sql developer工具,沒有此工具的可以去網路瀏覽器下載安裝即可,滑鼠點擊查看菜單。
H. oracle怎麼用命令執行sql文件
Oracle執行外部文件:
c:>sqlplus
user/pwd@db
sql>@new.sql
執行多個sql文件:
1.把所有的文件都放在同一個目錄下,然後在命令行里執行命令:
c:>dir/b
>
d:/1.sql
會把所有的sql文件名都輸出到一個sql文件中。
2.用UltraEdit打開生成的sql文件,alt+C切換到column
mode,給所有的行前都添加一個"@",保存。
3.在sqlplus中執行"@d:/1.sql"
如何避免'&'字元:
sql中&可以傳遞參數,但有時需要插入'&',例:
SQL>
select
'&hello'
v
from
al;
輸入
hello
的值:
hello
原值
1:
select
'&hello'
v
from
al
新值
1:
select
'hello'
v
from
al
v
-----
hello
可以使用如下方法避免:
A:
SQL>
select
chr(38)
||
'hello'
v
from
al;
V
------
&hello
B:
SQL>
set
define
off
SQL>
select
'&hello'
v
from
al;
V
------
&hello
I. oracle中怎樣執行.sql文件
建議使用plsql工具來連接Oracle資料庫進行表操作,這樣很方便的,就像使用sqlserver一樣方便
J. oracle怎麼用命令執行sql文件
Oracle執行外部文件:
c:>sqlplus user/pwd@db
sql>@new.sql
執行多個sql文件:
1.把所有的文件都放在同一個目錄下,然後在命令行里執行命令:
c:>dir/b > d:/1.sql
會把所有的sql文件名都輸出到一個sql文件中。
2.用UltraEdit打開生成的sql文件,alt+C切換到column mode,給所有的行前都添加一個"@",保存。
3.在sqlplus中執行"@d:/1.sql"
如何避免'&'字元:
sql中&可以傳遞參數,但有時需要插入'&',例:
SQL> select '&hello' v from al;
輸入 hello 的值: hello
原值 1: select '&hello' v from al
新值 1: select 'hello' v from al
v
-----
hello
可以使用如下方法避免:
A:
SQL> select chr(38) || 'hello' v from al;
V
------
&hello
B:
SQL> set define off
SQL> select '&hello' v from al;
V
------
&hello