到一個SQL文件單獨的查詢: 與MySQL: 我們可以用 Delimiter /
單獨的查詢在MySQL,DB2和Oracle
例如:
Delimiter/
select * from product;
/
select * from h_product;
/
Delimiter ;
insert into ptoduct(prod_name)values('my_prod_name');
併爲Oracle和DB2?使用什麼?還有分界符?
到一個SQL文件單獨的查詢: 與MySQL: 我們可以用 Delimiter /
單獨的查詢在MySQL,DB2和Oracle
例如:
Delimiter/
select * from product;
/
select * from h_product;
/
Delimiter ;
insert into ptoduct(prod_name)values('my_prod_name');
併爲Oracle和DB2?使用什麼?還有分界符?
在DB2 CLP腳本可以使用SET TERMINATOR指令「對飛」更改語句終止:
--#SET TERMINATOR ;
select * from sysibm.sysdummy1;
--#SET TERMINATOR/
create or replace trigger t1 ...
begin
...
end
/
你會再調用這個作爲db2 -tf myscript.sql
。請注意,SET TERMINATOR指令必須大寫。
我不認爲有一個選項可以在Oracle SQL * Plus腳本中自定義終止符。
在Oracle SQL * PLUS使用分號;
作爲SQL終止和.
爲PL/SQL塊
終止。不同於SQL終止(;
),終止和執行SQL語句, PL/SQL塊
終止(.
)只通知SQL * PLUS該塊已經結束,在緩衝留待進一步的編輯
如果使用斜槓/
產生或執行這樣的需求。
您可以通過發行SET SQLTERMINATOR ':'
(例如)更改SQl終止符。
您可以通過發出SET BLOCKTERMINATOR '!'
(例如)更改PL/SQL塊終止符。
要終止並執行一個使用正斜槓的PL/SQL塊/
。
在DB2中,您使用;
作爲SQL終結符(用於SQL PL和PL/SQL)。
您使用td選項定義語句終止字符。
例如,執行多個SQL,你叫DB2這樣的:
db2 -tf script.sql
script.sql
create table t1 (c1 int);
create table
t2 (c2 int);
當執行包含存儲過程,觸發器或功能的腳本,您可以用任何字符分隔它們,並通過-td選項定義語句終止字符。大多數時間都是使用。
db2 [email protected] -f scriptSQLPL.sql
scriptSQLPL.sql
CREATE PROCEDURE TEST()
RESULT SETS 1
LANGUAGE SQL
BEGIN
DECLARE value INT DEFAULT 1;
SET value = 0;
END @
如果不指定任何語句終止字符,由一個回車分隔每一行都會被視爲一個聲明。但是,你可以把反斜槓,以執行多線報表
db2
create \
table \
t1 \
(col1 int)
在最後一個例子,是替代使用的文件交互模式。
據我所知,用oracle我們在產品中添加了sqlterminator/select *; / select * from h_product; / sqlterminator; 插入到ptoduct(prod_name)值('my_prod_name'); ? – junior
@neila要執行DML語句,只需使用分號(';')('select * from h_product; select * from product;')就足夠了。如果你省略了分號,你可以在下一行使用斜槓。這兩種方法都將終止並執行DML語句。 –
我試過SET SQLTERMINATOR'/'for oracle,這沒關係:) thx – junior