在 sql 文件中分隔查询:使用 mysql:我们可以使用
Delimiter /
例子:
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 terminator( ;
) 不同,PL/SQL 块
terminator( .
) 仅通知 SQL*PLUS 该块已结束并留在缓冲区中以供进一步编辑
如果出现这种需要或使用 slash 执行/
。
您可以通过发出SET SQLTERMINATOR ':'
(例如)更改 SQl 终止符。
您可以通过发出SET BLOCKTERMINATOR '!'
(例如)更改 PL/SQL 块终止符。
要终止和执行 PL/SQL 块,请使用正斜杠/
。
在 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 )
在最后一个示例中,使用交互模式而不是使用文件。