(Oracle) Как удобно протестировать пользовательскую функцию без создания другой таблицы - PullRequest
0 голосов
/ 17 июня 2019

Чтобы проверить функцию 'test2' ниже, я пробовал вот так.

SELECT test2('A') FROM DUAL;SELECT test2('C') FROM DUAL;SELECT test2('E') FROM DUAL;

Но есть ли удобный способ сделать это сразу? (без создания другого стола)

Я думаю, запрос может выглядеть так ВЫБЕРИТЕ test2 (p.c1) ОТ (....) p?

Таблица и функция, как показано ниже

    CREATE TABLE T2 (
    C1 VARCHAR2(1),
    C2 NUMBER
    );

    INSERT INTO T2  VALUES ('A',1);
    INSERT INTO T2  VALUES ('B',4);
    INSERT INTO T2  VALUES ('C',3);
    INSERT INTO T2  VALUES ('D',2);
    INSERT INTO T2  VALUES ('E',4);

    CREATE OR REPLACE FUNCTION test2
    (p1 IN VARCHAR2)
    RETURN NUMBER AS V_VALUE NUMBER;
    BEGIN
    SELECT(
        SELECT C2 
        FROM T2

    WHERE C1=p1)
INTO V_VALUE
FROM DUAL;
RETURN V_VALUE;
END;
/

1 Ответ

0 голосов
/ 17 июня 2019

Я думаю, что вы можете после чего-то вроде:

WITH test_data AS (SELECT 'A' val FROM dual UNION ALL
                   SELECT 'B' val FROM dual UNION ALL
                   SELECT 'C' val FROM dual UNION ALL
                   SELECT 'D' val FROM dual UNION ALL
                   SELECT 'E' val FROM dual)
SELECT test2(val)
FROM   test_data;

Использование select ... from dual union all select ... from dual ... - отличный способ настройки временных тестовых данных для простых тестов без необходимости создавать дополнительные объекты для хранения данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...