Bonsoir,
Malgré mes recherches et sûrement à cause des heures sup' je ne trouve pas la cause d'un problème que j'imagine assez trivial.
Dans une unité de programme sous forms 6i, je souhaite effectuer un calcul basique :
<OPERANDE_1> <OPERATEUR> <OPERANDE_2>
sachant que les valeurs de ces 3 éléments sont stockés dans des variables
L'utilisation d'un curseur provoque une ORA-06502 et EXECUTE IMMEDIATE ne fonctionne pas sous forms (ou sous cette version ou bien encore parce que je débute)
Par conséquent, j'utilise le package EXEC_SQL :La requête s'exécute correctement mais je ne comprends pas pourquoi le résultat est systématiquement un entier alors que je lui fournis des réels.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 ... LConn_conn_id := EXEC_SQL.DEFAULT_CONNECTION; LCu_b0337 := EXEC_SQL.OPEN_CURSOR(LConn_conn_id); LC_sql_stmt := 'SELECT ' || LN_an1_montant1 || LC_t37_symbolcal || LN_an1_montant2 || ' FROM DUAL'; EXEC_SQL.PARSE(LConn_conn_id, LCu_b0337, LC_sql_stmt); EXEC_SQL.DEFINE_COLUMN(LConn_conn_id, LCu_b0337, 1, LN_resultat_calcul); LI_nIgn := EXEC_SQL.EXECUTE(LConn_conn_id, LCu_b0337); WHILE ( EXEC_SQL.FETCH_ROWS(LConn_conn_id, LCu_b0337) > 0 ) LOOP EXEC_SQL.COLUMN_VALUE(LConn_conn_id, LCu_b0337, 1, LN_resultat_calcul); END LOOP; EXEC_SQL.CLOSE_CURSOR(LConn_conn_id, LCu_b0337); EXEC_SQL.CLOSE_CONNECTION(LConn_conn_id); ...
Ex : SELECT 10.5 + 2.7 FROM DUAL retournera 12 au lieu de 13.2
Où est mon erreur ?
Merci.
Partager