如何在 DB2 中创建匿名块,如 PL/SQL
How to create anonymous block in DB2 like as PL/SQL
Oracle PL/SQL代码:
declare
N integer not null := 0;
null_variable exception;
begin
select col1 into N from T;
if N is null then
raise null_variable;
end if;
exception
when null_variable then
dbms_output.put_line('Null variable detected');
end;
对于DB2无法创建。
将以下内容放入文件 q1.sql
:
--#SET TERMINATOR @
set serveroutput on@
BEGIN
DECLARE N INT DEFAULT 0;
select col1 into N from T;
IF N IS NULL THEN
CALL dbms_output.put_line ('Null variable detected');
END IF;
END@
set serveroutput off@
运行它:
db2 -f q1.sql
如果您喜欢使用异常处理程序,那么:
BEGIN
DECLARE N INT DEFAULT 0;
DECLARE null_variable CONDITION FOR '75001';
DECLARE EXIT HANDLER FOR null_variable
BEGIN
--DECLARE L_TEXT VARCHAR (32672) DEFAULT '*';
--GET DIAGNOSTICS EXCEPTION 1 L_TEXT = MESSAGE_TEXT;
--CALL dbms_output.put_line ('MSG: ' || L_TEXT);
CALL dbms_output.put_line ('Null variable detected');
END;
select col1 into N from T;
IF N IS NULL THEN
SIGNAL null_variable
SET MESSAGE_TEXT = 'Some message';
END IF;
END@
有关详细信息,请参阅 Compound SQL (compiled) statement 主题。
Oracle PL/SQL代码:
declare
N integer not null := 0;
null_variable exception;
begin
select col1 into N from T;
if N is null then
raise null_variable;
end if;
exception
when null_variable then
dbms_output.put_line('Null variable detected');
end;
对于DB2无法创建。
将以下内容放入文件 q1.sql
:
--#SET TERMINATOR @
set serveroutput on@
BEGIN
DECLARE N INT DEFAULT 0;
select col1 into N from T;
IF N IS NULL THEN
CALL dbms_output.put_line ('Null variable detected');
END IF;
END@
set serveroutput off@
运行它:
db2 -f q1.sql
如果您喜欢使用异常处理程序,那么:
BEGIN
DECLARE N INT DEFAULT 0;
DECLARE null_variable CONDITION FOR '75001';
DECLARE EXIT HANDLER FOR null_variable
BEGIN
--DECLARE L_TEXT VARCHAR (32672) DEFAULT '*';
--GET DIAGNOSTICS EXCEPTION 1 L_TEXT = MESSAGE_TEXT;
--CALL dbms_output.put_line ('MSG: ' || L_TEXT);
CALL dbms_output.put_line ('Null variable detected');
END;
select col1 into N from T;
IF N IS NULL THEN
SIGNAL null_variable
SET MESSAGE_TEXT = 'Some message';
END IF;
END@
有关详细信息,请参阅 Compound SQL (compiled) statement 主题。