i ont la fonction suivante:types de données inconsistantes dans Oracle
create or replace
FUNCTION "MXUPGKEYVAL"(tbname varchar2,colname varchar2) return number is
val number;
BEGIN
EXECUTE IMMEDIATE
'select sum(length('||colname||')) from '||tbname into val;
return val;
END;
et la mise à jour suivante:
update ANINTEGDATA set val1=to_char(nvl(MXUPGKEYVAL(MX5T,MX5C),0)) where type=1;
quand j'exécute la mise à jour i get:
ORA-00932: inconsistent datatypes: expected NUMBER got LONG
ORA-06512: at "MAXIMO.MXUPGKEYVAL", line 6
ORA-06512: at line 2
toute idée pourquoi Cela arrive?
Cordialement, Radu.
modifier plus tard:
Table ANINTEGDATA est:
create table ANINTEGDATA
(
MX5T VARCHAR2(50),
MX5C VARCHAR2(50),
MX6T VARCHAR2(50),
MX6C VARCHAR2(50),
TYPE NUMBER,
VAL1 VARCHAR2(200),
VAL2 VARCHAR2(200)
);
Salut Radu, nous ne pouvons pas vous donner une réponse correcte si vous ne nous donnez pas de données d'échantillon et les types de données de colonne de cette table: 'ANINTEGDATA (val1, type, MX5T, MX5C)'. –
Bonjour Vincent. Merci pour votre réponse. J'ai ajouté les types de données de la table ANINTEGDATA. la table contient des valeurs pour MX5T, MX5C et les champs de type maintenant. Les champs MX5T et MX5C contiennent les noms de tables et les noms de colonnes de différentes tables sur le même schéma. –
Le premier argument de MXUPGKEYVAL est apparemment supposé être un nom de table, et dans l'exemple cet argument est donné comme 'MX5T' (je crois que ceci devrait être entre guillemets). Y a-t-il une table MX5T? C'est aussi un nom de colonne sur ANINTEGDATA. S'il y a une table MX5T, pourriez-vous poster la définition de cette table? Si ce n'est pas le cas, vérifiez que la définition de la fonction ci-dessus est à jour. J'ai créé la table ANINTEGDATA et la fonction MXUPGKEYVAL comme indiqué ci-dessus mais j'ai obtenu des erreurs différentes de celles que vous avez reçues. Merci. –