Hola Keller,
Gracias por compartir la perspectiva.
En realidad, lo que estoy haciendo aquí es construir una API para que nuestro equipo pueda manejar procedimientos almacenados de HANA. Pueden usar la API para crear/eliminar/llamar procedimientos/tipos de tabla.
Me decantaré por ADBC al principio porque aprendí de mi colega que no podemos llamar a una vista CDS con parámetros de entrada (función de tabla en HANA) dentro de un AMDP. Este tipo de limitación no existe en un procedimiento almacenado puro de HANA. Dado que de todos modos estamos generando procedimientos, parece que un procedimiento puro es más potente que un AMDP.
En cuanto al rendimiento, ya revisé tu respuesta en este blog
Rendimiento lento en AMDP
. Por una cuestión de corrección, abriré el parámetro IS_LOB al consumidor para que decidan si el parámetro necesita manejo de LOB.
¿Hay algún otro punto en el que deba tener cuidado o mejorar en el manejo de procedimientos con ADBC?
En cuanto a la programación dinámica, aquí está la cuestión, estoy teniendo dificultades para construir un script SQL nativo para crear/llamar procedimientos almacenados.
-------------------------------------------------------------------------------------------
#1 Para el método create_procedure de mi API, necesito abrir un parámetro de importación it_param para que el consumidor pase los parámetros de entrada del procedimiento para que pueda generar un script como el siguiente:
CREATE PROCEDURE
......
El problema aquí es que tengo que convertir
TIPO DE DATOS ABAP
a
TIPO DE DATOS HANA
por mi cuenta. Consultando el blog
Cómo SLT mapea los tipos de datos
. He realizado el trabajo en el archivo adjunto
convert-abap-type-to-hana-type.txt
.
¿Podrías revisarlo por si cometí algún error en el código?
-------------------------------------------------------------------------------------------
#2 Para el método call_procedure (solo caso de parámetro escalar) de mi API, al igual que en el método create, también necesito parámetros de entrada con tipo ABAP, pero no quiero molestar al consumidor para que pase los parámetros de salida. Devolveré una tabla interna con todos los parámetros de salida escalares. ¿Puedo lograrlo? Parece que no es posible a menos que busque los parámetros en "SYS"."PROCEDURE_PARAMETERS" para obtener todos los parámetros de salida con TIPO DE DATOS HANA y luego convertir
TIPO DE DATOS HANA a TIPO DE DATOS ABAP por mi cuenta.
No estoy seguro si este es el enfoque correcto, ¿podrías compartir tus pensamientos al respecto?
--------------------------------------------------------------------------------------------
#3 Para el método call_procedure_tabular_out (caso de un parámetro tabular de salida) de mi API. Necesito construir la cadena de consulta por mi cuenta como se muestra a continuación:
CALL '20170314121212', P_AMOUNT=>1000, outputParams=>?);
Aquí puedes ver que tengo dos parámetros P_TIMESTAMP que es CHAR y P_AMOUNT que es DECIMAL. ¿Cómo puedo completar el
valor del parámetro
'20170314121212'
y 1000? Todos son referencias de datos, ¿podría simplemente escribirlo de la siguiente manera:
lv_script = |CALL "XXX"."Test"( P_TIMESTAMP=>{ ir_param1->*
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019