2015-02-12 6 views
1

Мы используем Agine Workbench для Netezza SQL, и мне было интересно, знает ли кто-нибудь об эквиваленте в NZSQL для функции TSQL «PRINT»?NZSQL/CODE - Как использовать PRINT в Netezza

Мы используем его для печати ошибок, когда кто-то пытается выполнить запрос, который будет переписывать данные, когда он не должен, и единственным решением, которое я нахожу, является использование командной строки netezza «-t».

Заранее благодарен!

ответ

2

Вы можете использовать RAISE для этого, как описано в документе here.

Вот пример:

CREATE OR REPLACE PROCEDURE RAISE_DEMO() 
RETURNS VARCHAR(ANY) 
EXECUTE AS OWNER 
LANGUAGE NZPLSQL AS 
BEGIN_PROC 
DECLARE 
MYNAME varchar; 
BEGIN 
MYNAME := 'SCOTT'; 

RAISE NOTICE 'Hello, %', MYNAME; 

END; 
END_PROC; 

TESTDB.ADMIN(ADMIN)=> call raise_demo(); 
NOTICE: Hello, SCOTT 
RAISE_DEMO 
------------ 

(1 row) 

Если уведомление об этом в ИСКЛЮЧЕНИЯ, то выполнение остановится.

CREATE OR REPLACE PROCEDURE RAISE_DEMO() 
RETURNS VARCHAR(ANY) 
EXECUTE AS OWNER 
LANGUAGE NZPLSQL AS 
BEGIN_PROC 
DECLARE 
MYNAME varchar; 
BEGIN 
MYNAME := 'SCOTT'; 

RAISE EXCEPTION 'Hello, %, this is an exception', MYNAME; 

RAISE NOTICE 'You should not see this message'; 

END; 
END_PROC; 

TESTDB.ADMIN(ADMIN)=> call raise_demo(); 
ERROR: Hello, SCOTT, this is an exception 
TESTDB.ADMIN(ADMIN)=> 

Такое поведение в документированы в ссылке я представил в верхней части.

+0

Благодарим за отзыв, Скотт. Есть ли способ сделать уведомление об увеличении запроса на основе логики? То, что мы использовали в TSQL, было: IF Col1 = Col2 BEGIN PRINT N 'Мой пользовательский комментарий здесь' RETURN END ELSE cryocaustik

+1

Отредактирован ответ, чтобы его охватить. – ScottMcG

+0

Еще раз спасибо за вашу помощь, Скотт. Очень признателен. Идя в беспорядок с этим, я думаю, что это сработает для нас! – cryocaustik

Смежные вопросы