1

SQLファイルでクエリを分離するには: mysql を使用: 使用できます Delimiter /

例:

Delimiter /
select * from product;
/
select * from h_product;
/
Delimiter ;
insert into ptoduct(prod_name)values('my_prod_name');

Oracleとdb2の場合は?何を使う?デリミタも?

4

3 に答える 3

2

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 スクリプトでターミネータをカスタマイズするオプションはないと思います。

于 2013-08-20T14:04:27.270 に答える
1

DB2 では;、SQL ターミネータとして使用します (SQL PL および PL/SQL 用)。

ステートメント終了文字は、td オプションで定義します。

たとえば、複数の SQL を実行するには、次のように db2 を呼び出します。

db2 -tf script.sql

スクリプト.sql

create table t1 (c1 int);
create table 
  t2 (c2 int);

ストアド プロシージャ、トリガー、または関数を含むスクリプトを実行する場合、それらを任意の文字で区切り、-td オプションを使用してステートメント終了文字を定義できます。ほとんどの場合、@ が使用されます。

db2 -td@ -f scriptSQLPL.sql

スクリプトSQLPL.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 )

最後の例では、ファイルを使用する代わりに対話モードが使用されました。

于 2013-08-20T12:53:59.200 に答える