到一个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