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 :
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);
...
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.

Ex : SELECT 10.5 + 2.7 FROM DUAL retournera 12 au lieu de 13.2

Où est mon erreur ?
Merci.