Функция работает в PL / SQL, но не в PowerBi - PullRequest
0 голосов
/ 07 июня 2018

Когда я вызываю функцию, она работает в SQL * Plus, но не работает в PowerBI.

Я открыл PowerBI> Получить данные> Oracle> Введенное имя сервера> Перешел к расширенным опциям для ввода sql ниже

SELECT * FROM TABLE (TESTPOWERBI);

Ошибка: возникла ошибка при попытке подключения.Команда SQL неправильно завершена .

Кто-нибудь имеет опыт решения этой проблемы?

DROP TYPE VW_PEOPLE_TABLE;

DROP TYPE VW_PEOPLE_TYPE;

CREATE OR REPLACE TYPE VW_PEOPLE_TYPE AS OBJECT(NAME VARCHAR2(70), ALIAS VARCHAR2(90));
/
CREATE OR REPLACE TYPE VW_PEOPLE_TABLE AS TABLE OF VW_PEOPLE_TYPEL
/
CREATE OR REPLACE FUNCTION TESTPOWERBI RETURN VW_PEOPLE_TABLE
PIPELINED
AUTHID CURRENT_USER
AS
VWT VW_PEOPLE_TABLE;
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
    SELECT
        VW_PEOPLE_TYPE(NAME, ALIAS)
    BULK COLLECT
    INTO VWT
    FROM MYDATABASE;

    FOR i in 1 .. VWT.COUNT
    LOOP
        PIPE ROW (VW_PEOPLE_TYPE(VWT(i).NAME, VWT(i).ALIAS));
    END LOOP;


END TESTPOWERBI;
/
GRANT EXECUTE ON TESTPOWERBI TO PUBLIC;

1 Ответ

0 голосов
/ 07 июня 2018

Вы смешали свои разделители ; и /.

Очистите его и добавьте один в конце после GRANT EXECUTE ON TESTPOWERBI TO PUBLIC.

Кроме того, вы получили опечатку: for i in 1 .. vwt.count только две точки.

Это должно сработать:

DROP TYPE VW_PEOPLE_TABLE;

DROP TYPE VW_PEOPLE_TYPE;

CREATE OR REPLACE TYPE VW_PEOPLE_TYPE AS OBJECT
(
    NAME VARCHAR2 (70),
    ALIAS VARCHAR2 (90)
);

CREATE OR REPLACE TYPE VW_PEOPLE_TABLE AS TABLE OF VW_PEOPLE_TYPEL;

CREATE OR REPLACE FUNCTION TESTPOWERBI
    RETURN VW_PEOPLE_TABLE
    PIPELINED
    AUTHID CURRENT_USER
AS
    VWT   VW_PEOPLE_TABLE;
    PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
    SELECT VW_PEOPLE_TYPE (NAME, ALIAS)
      BULK COLLECT INTO VWT
      FROM MYDATABASE;

    FOR i IN 1 .. VWT.COUNT
    LOOP
        PIPE ROW (VW_PEOPLE_TYPE (VWT (i).NAME, VWT (i).ALIAS));
    END LOOP;
END TESTPOWERBI;
/

GRANT EXECUTE ON TESTPOWERBI TO PUBLIC;

Вот некоторые обсуждения разделителей: Когда мне нужно использовать точку с запятой против косой черты в Oracle SQL?

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