Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!
Hola
Necesito ayuda para ejecutar un procedimiento almacenado de oráculo que simplemente devuelve pocas columnas.
Estoy recibiendo el error "Oracle:ORA00900: instrucción SQL no válida".
Estoy usando el cursor ref - ver abajo el código - produce un error. Funciona bien en el desarrollador de sql.
CREAR O REEMPLAZAR esquema DE PROCEDIMIENTO. TestSP
Como
c1 SYS_REFCURSOR;
Comenzar
abierto c1 para
SELECT Col1,Col2
FROM LinkDBServer;
DBMS_SQL. RETURN_RESULT c1);
FIN;
ejecutar schemax. TestSP
Uso de funciones Pipened - no hay ningún error en el escritorio Powerbi
CREAR O REEMPLAZAR TIPO t_type
COMO OBJETO
(
col1 NUMBER(22,14) NULL,
col2 VARCHAR2(120)
);
CREAR O REEMPLAZAR TIPO t_table_type
COMO TABLA DE t_type;
CREAR O REEMPLAZAR FUNCIONES fnc_Get_t_Pipelined
DEVOLVER t_table_type
PIPELINED
Como
Comenzar
PARA v_Rec IN (SELECT Col1, Col2 FROM LinkDBServer where rownum<-10) LOOP
PIPE ROW (t_type(v_Rec.Col1, v_Rec.Col2));
END LOOP;
DEVOLVER;
FIN;
SELECT Col1,Col2 FROM TABLE(fnc_Get_t_Pipelined());
¿Alguna sugerencia sobre cómo ejecutar un proceso de oracle en los archivos de escritorio de Power BI?
Rakesh, funciona perfectamente en el modo de importación. cuando utilicé la misma sintaxis en el modo Directo, está dando un error de sintaxis como falta la parátesis derecha.
¿Cómo podemos llamar en modo Consulta Directa?
Para cualquier persona en el mismo barco que yo - Oracle almacenado proc con cursores ref se puede ejecutar dentro de power bi desktop. Sólo tiene que ejecutarse con la declaración de variable de cursor.
¿Puede compartir más información sobre cómo llamar al procedimiento almacenado de oráculo con sys_refcursor de power bi
Dentro de Oracle:
CREAR O REEMPLAZAR EL PROCEDIMIENTO [ESQUEMA]. [STOREDPROCNAME]
( P_RC out SYS_REFCURSOR )
Como
Comenzar
P_RC ABIERTO PARA SELECT COL1,COL2,COL3 BLAH BLAH BLAH
FIN;
En Power BI Desktop:
DECLARE P_RC SYS_REFCURSOR;
Comenzar
[ESQUEMA]. [STOREDPROCNAME] (P_RC);
DBMS_SQL. RETURN_RESULT(P_RC);
FIN;
Espero que esto ayude.
saludos
Rakesh Singh
Hi RakeshSinghr,
Su respuesta a continuación funcionó para mí para el procedimiento almacenado, gracias por publicar. ¿Puede publicar un ejemplo si quiero tener una selección de una tabla con la cláusula where en el cuadro Instrucción SQL en Opción avanzada al obtener datos de Oracle? Solo fyi estoy uniendo varias tablas en esta instrucción select y devolviendo filas.
¿Realmente consiguió que esto funcionara desde el servicio Power BI a través de la puerta de enlace? Si es así, ¿cómo lo hiciste?
Rakesh --
Estoy llamando correctamente a un procedimiento almacenado de Oracle devolviendo un sys_refcursor en Power BI Desktop; pero cuando publico mi informe en el servicio Power BI mediante una puerta de enlace empresarial (área de trabajo premium), el conjunto de datos se errores al intentar actualizar diciendo que la columna no existe en el conjunto de filas. ¿Ha podido actualizar el informe en Power BI Service llamando a un programa almacenado de Oracle devolviendo un sys_refcursor?
Sí, funcionó para mí a través de la puerta de enlace. No hay ninguna razón por la que funcione en power bi desktop pero no a través de la puerta de enlace. Ejecute el proc almacenado utilizando las credenciales de la cuenta de origen de datos de la puerta de enlace para ver si hay algún problema de permisos
gracias por la respuesta Rakesh. Como otro póster, Chuy, respondió (trabajamos en la misma organización y él me está ayudando a tratar de solucionar el error). El informe y el SP se ejecutan mediante las credenciales de la puerta de enlace. Pero obtenemos el siguiente error al actualizar el conjunto de datos después de que el informe se haya publicado en Power BI Service mediante la puerta de enlace:
El El mensaje de error que recibimos en el servicio Power BI es:
La columna '<pii>Column Name</pii>' no existe en el conjunto de filas. Tabla: Consulta1
También he leído que algunas versiones del cliente Oracle no admiten sys_refcursors, ¿podría ser este el problema para nuestro servidor Gateway? ¿Hay alguna otra configuración del servidor de puerta de enlace que deba habilitarse? Este informe se ejecuta y actualiza sin errores en Power BI Desktop en varios equipos.
Sí, he probado la ejecución de este SP con las credenciales que usamos en el origen de datos en la puerta de enlace y es capaz de ejecutar/representar datos. El mensaje de error que recibimos en el servicio Power BI es:
La columna '<pii>Column Name</pii>' no existe en el conjunto de filas. Tabla: Consulta1
Parece que no es capaz de "atrapar" el conjunto de récords final generado por el SP.
¿Recuerda haber hecho algo más en específico, ya sea en su script SQL o en la configuración en el cliente Oracle instalado en el servidor Gateway?
Gracias...
Estoy teniendo este mismo problema, el mensaje de error es:
La columna '<pii>Column Name</pii>' no existe en el conjunto de filas. Tabla: Consulta1
Y he agotado todas las búsquedas posibles en Google tratando de encontrar una solución para esto.
¡Cualquier comentario sobre esto será apreciado!
@chuy-varela alguna vez hizo que esto funcionara (llamando al procedimiento almacenado de Oracle a través de la puerta de enlace)
Recientemente he tenido este problema y he abierto un caso con Microsoft, es una limitación conocida en la actualidad; pero recibió comentarios esta semana del grupo de ingeniería de Power BI de que van a agregar esta brecha de funcionalidad como una solicitud de característica que se incluirá en su hoja de ruta, sin ETA hasta el momento, aunque cuándo se abordará esto.
Hola @klinejordan ! No, esta es una limitación conocida que está bien descrita en la documentación en línea, simplemente no pude encontrar ese documento antes de abrir mi pregunta aquí.
Mark Vaillancourt me señaló el documento donde se revela esto:
Hi Rakesh
Thanks for the Code.
I am not getting any error during connection but when tried to save changes, getting error missing right paranthasis. Checked the syntax in advanced editor and everything looks correct but still I can see error.
Any ideas.
Thanks
siva
Thanks Rakesh,
Code is working, didn't do anything special just restarted the Power BI.
Thanks
Siva
hola @RakeshSinghr
Podría utilizar el procedimiento almacenado de Oracle en power bi, pero parece que Ref_Cusors no está disponible por ahora.
saludos
Lin
Hola @RakeshSinghr ,
tal vez esta entrada de blog ayudará.
https://hatfullofdata.blog/power-query-function-to-execute-a-procedure/
HI @RakeshSinghr,
¿Qué modo de conexión funciona? AFAIK, no puede invocar procedimientos almacenados en instrucciones SQL cuando se trabaja en modo de consulta directa.
saludos
Xiaoxin Sheng