[BUG] callProcedure returns parameter values of incorrect datatype
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 38/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- javascript, node.js
- Área
- database
Línea de trabajo
Comienza en el punto de entrada callProcedure y reproduce los casos reportados de DB2 for i utilizando las definiciones INOUT y OUT mostradas en el issue. Sigue cómo se convierten los valores de los parámetros y los datos de procedimientos de ODBC; el trabajo estará terminado cuando los resultados DECIMAL(11,2) tengan valores numéricos y tipos coherentes en ambos casos, con cobertura de regresión si el repositorio proporciona una ubicación de prueba adecuada.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
odbcPackage Version: 2.4.8- ODBC Driver: unixODBC 2.3.9
- Database Name: DB2 for i
- Database Version: V7R5
- Database OS: IBM i
- Node.js Version: v18.20.2
- Node.js OS: IBM i
When using callProcedure I'm finding the returned results don't respect the datatype of the procedure parameters but instead appear to respect the datatype of the Node.js fields.
For example, if I create the following procedure.
DROP PROCEDURE RMTEMP.MY_PROC ;
CREATE PROCEDURE RMTEMP.MY_PROC (
INOUT PARAM1 DECIMAL(11,2) ,
INOUT PARAM2 DECIMAL(11,2) ,
INOUT PARAM3 DECIMAL(11,2) ,
INOUT PARAM4 DECIMAL(11,2)
)
BEGIN
SET PARAM1 = 123.45;
SET PARAM2 = 123.45;
SET PARAM3 = 123.45;
SET PARAM4 = 123.45;
END;
-- CALL RMTEMP.MY_PROC(99.99, 0, '99.99', null);
With the following Node.js code.
const odbc = require('odbc');
odbc.connect('DSN=MYIBMI', (error, connection) => {
if (error) { throw error; }
let param1=99.99;
let param2=0;
let param3='99.99';
let param4=null;
connection.callProcedure(null, 'RMTEMP', 'MY_PROC', [param1, param2, param3, param4], (error, result) => {
if (error) { throw error; }
connection.close();
console.log(result);
});
});
When I call this from Node I'm expecting all four parameters to have a return value of 123.45 (as numbers) but instead I get this. Of particular concern is the second parameter, which is returned as an integer, though I would expect all values to be returned as numbers rather than strings.
[
statement: '{ CALL RMTEMP.MY_PROC (?,?,?,?) }',
parameters: [ 123.45, 123, '123.45', '123.45' ],
return: undefined,
count: 0,
columns: []
]
If I change the procedure to all OUT parameters I get a different result.
DROP PROCEDURE RMTEMP.MY_PROC ;
CREATE PROCEDURE RMTEMP.MY_PROC (
OUT PARAM1 DECIMAL(11,2) ,
OUT PARAM2 DECIMAL(11,2) ,
OUT PARAM3 DECIMAL(11,2) ,
OUT PARAM4 DECIMAL(11,2)
)
BEGIN
SET PARAM1 = 123.45;
SET PARAM2 = 123.45;
SET PARAM3 = 123.45;
SET PARAM4 = 123.45;
END;
Running the same Node.js code I get the following. At least I'm getting the correct values but all of the parameters are returned as strings rather than numbers.
[
statement: '{ CALL RMTEMP.MY_PROC (?,?,?,?) }',
parameters: [ '123.45', '123.45', '123.45', '123.45' ],
return: undefined,
count: 0,
columns: []
]
- Lenguaje dominante
- JavaScript
- Estrellas
- 159
- Forks
- 92
- Merge medio
- 5 h 59 min
- PR fusionados (30 d)
- 3
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de IBM/node-odbc
-
doc: how to run the testsAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
-
security
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
-
[Bug] Sybase ASE: Encoding issue (works in msnodesqlv8, fails in node-odbc with \x1A artifacts)Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 38/100
Todos los issues de IBM/node-odbc
Issues similares
-
triage-needed
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
MicrosoftDocs/edge-developer#3970 ·
Los mantenedores suelen responder en 1 día
-
agent/scanner hive/hosted-available-lke648397-260827-5n31 quality testing
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
PWA stores a grouped number entry 1000x too small in German localePosiblemente ocupada @Minhal128 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
Add: YRF MusicAbiertocheck:passed feeds:add
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
iptv-org/database#37102 · 2 comentarios ·
Los mantenedores suelen responder en 9 días
-
[workshop-sim] Repair: Add a fallback sample .lock.yml to the Agentic Workflows Intro Activity 1Abiertofeedback simulation workshop
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
githubnext/gh-aw-workshop#4328 ·
Los mantenedores suelen responder en 1 día