Je suis mon essayant de convertir une procédure oracle de quelque chose comme ci-dessous à Netezza et face à certains problèmes lors de l'exécution, pas d'erreurs de compilation. La procédure a été exécutée avec succès dans Oracle. A propos de la tâche, il s'agit d'un traitement par lots sans attente de retour ou de prise de paramètres d'entrée et d'une boucle dans la table pour préparer une instruction SQL de façon dynamique. La logique est bien construite car il n'y a pas de problème dans Oracle.erreur de procédure stockée Netezza
CREATE OR REPLACE PROCEDURE proc1()
RETURNS CHARACTER VARYING (ANY) EXECUTE AS OWNER LANGUAGE NZPLSQL AS
BEGIN_PROC
DECLARE
lv_sql varchar(4000);
lv1 varchar(4000);
lv2 varchar(4000);
lv3 varchar(4000);
lv4 varchar(4000);
lv5 varchar(4000);
lv_value varchar(1000);
lv_str_cnt integer;
lv_ret_string VARCHAR(1000);
BEGIN
FOR c1 IN (SELECT * from test)
LOOP
IF lv_str_cnt = 0 THEN
lv_ret_string := '''' || c1.col1 || '''';
ELSE IF lv_str_cnt IS NULL THEN
lv_ret_string := NULL;
ELSE
lv_ret_string := '''' || c1.col2 || '''';
END IF;
.............
.............
lv_sql := lv_sql || lv1 || lv2 || lv3 || lv4;
EXECUTE IMMEDIATE lv_sql;
END LOOP;
END;
END_PROC;
je reçois l'erreur suivante lorsque la procédure est exécutée « Erreur de syntaxe, WORD inattendue à ou près Varchar2 »
Varchar2 est un type de données Oracle et je peux le confirmer est modifié pour Varchar de Netezza en ma procédure dans tous les endroits. J'ai cherché sur google pour trouver de bons exemples de création d'une procédure mais malheureusement je n'ai pas pu obtenir l'aide désirée.
Il existe également un code de bloc particulier que je veux créer en tant que fonction et le réutiliser. Malheureusement coincé avec la syntaxe de la fonction aussi.
Appréciez votre aide
Il n'y a pas de VARCHAR2 dans Netezza. Utilisez NVARCHAR. Vérifiez le type pour lv_ret_string. – HGF
@HGF, Oui d'accord, je l'ai modifié déjà après pointé par Lars. Je suis en train d'éditer le sujet aussi. Mais encore je me retrouve avec la même erreur. – Venkat
@HGF, quoi que ce soit avec le curseur pour la boucle s'il vous plaît? – Venkat