У меня есть проблема, которая уже заняла у меня несколько дней, чтобы ее решить ..
Мое объяснение будет довольно длинным, но я пытаюсь сделать его коротким.иметь имя пакета UT_BETWNSTR, которое содержит:
create or replace
PACKAGE "UT_BETWNSTR"
IS
PROCEDURE ut_setup;
PROCEDURE ut_teardown;
PROCEDURE ut_betwnstr;
END UT_BETWNSTR;
, и тело пакета выглядит так:
create or replace
PACKAGE BODY "UT_BETWNSTR"
IS
PROCEDURE ut_setup IS
BEGIN
NULL;
END;
PROCEDURE ut_teardown
IS
BEGIN
NULL;
END;
PROCEDURE ut_BETWNSTR IS
BEGIN
utAssert.eq (
'Typical valid usage',
BETWNSTR(
STRING_IN => 'abcdefg',
START_IN => 3,
END_IN => 5)
,
'abc'
);
utAssert.isnull (
'NULL start',
BETWNSTR(
STRING_IN => 'abcdefg',
START_IN => NULL,
END_IN => 5)
);
utAssert.isnull (
'NULL end',
BETWNSTR(
STRING_IN => 'abcdefg',
START_IN => 2,
END_IN => NULL)
);
utAssert.isnull (
'End smaller than start',
BETWNSTR(
STRING_IN => 'abcdefg',
START_IN => 5,
END_IN => 2)
);
utAssert.eq (
'End larger than string length',
BETWNSTR(
STRING_IN => 'abcdefg',
START_IN => 3,
END_IN => 200)
,
'cdefg'
);
END ut_betwnstr;
END UT_BETWNSTR;
, а имя функции BETWNSTR выглядит так:
create or replace
FUNCTION BETWNSTR (
string_in IN VARCHAR2,
start_in IN INTEGER,
end_in IN INTEGER
)
RETURN VARCHAR2
IS
l_start PLS_INTEGER := start_in;
BEGIN
IF l_start = 0
THEN
l_start := 1;
END IF;
RETURN (SUBSTR (string_in, l_start, end_in - l_start + 1));
END;
На моем диске C я поместил имя файла BETWNSTR.sql, которое содержит:
connect hr/hr
SET SERVEROUTPUT ON
EXEC UTPLSQL.TEST('BETWNSTR',Recompile_in=>FALSE);
exit
, и это мой командный файл (также на диске C), имя try.bat, которое содержит:
@sqlplus /nolog @C:\betwnstr.sql
echo %errorlevel%
if errorlevel 0 goto Success
echo You Got Error
:Success
echo Good Job!!
pause
хорошо, здесь появляется ошибка
, когда я запускаю try.bat, он вернет большой результат FAILURE, поскольку я намеренно поставил
PROCEDURE ut_BETWNSTR IS
BEGIN
utAssert.eq (
'Typical valid usage',
BETWNSTR(
STRING_IN => 'abcdefg',
START_IN => 3,
END_IN => 5)
,
'abc'
);
вместо
PROCEDURE ut_BETWNSTR IS
BEGIN
utAssert.eq (
'Typical valid usage',
BETWNSTR(
STRING_IN => 'abcdefg',
START_IN => 3,
END_IN => 5)
,
'cde'
);
Я сделал это специально, так что я надеюсь, что cmd выдаст эхо:
You Got Error
, потому что получил ошибку в моем коде ... но уровень ошибки отображает 0, что означает успех..
я знаю, мой код теперь зависит от уровня ошибки .. когда уровень ошибки равен 0, он будет отображаться как Good Job ..
что яхочу прямо сейчас, когда я запускаю командный файл, когда он сталкивается с ошибкой, я могу вывести сообщение You Got Error ..
как я могу вывести сообщение "You Got Error", когда уровень ошибки всегдакороче говоря 0 ..
, я хочу отобразить сообщение об ошибке независимо от уровня ошибки ..
Я надеюсь, что кто-нибудь может решить мою проблему, пожалуйста, ответьте на мой вопрос ..1041 *
Заранее спасибо!