Procédure avec nom table et valeur d'un champ en paramètre
Bonjour à tous,
Alors, j'ai deux problèmes dans la conception de ma procédure stockée sous oracle avec SQL Developer.
Premier souci:
En fait, ma procédure prend en paramètre le nom d'une table et une valeur d'un des champs de cette table. Je souhaite alors conserver dans une variable (booléenne) le résultat du select sur cette table avec comme condition la valeur du champ concerné. Pour celà j'utilise "EXECUTE IMMEDIATE" pour mon select et "decode" pour vérifier la valeur de retour du select. Mais EXECUTE IMMEDIATE ne prend pas en compte la variable "var_Found_table_attribut"
Second souci: les cotes dans 'N' et 'Y' que j'utilise dans ma requête n'ont pas l'air d'etre apprécié par le codes.
Voilà mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| CREATE
TABLE TABLE_EIM
(
ROW_ID VARCHAR2(30),
IF_ROW_BATCH_NUM VARCHAR2(60),
PRIMARY KEY (ROW_ID)
);
create or replace
PROCEDURE DEBUT_ETAPE(NOM_TABLE IN VARCHAR2, BATCH_NUM IN VARCHAR2)
IS
var_Found_table_attribut varchar2(30);
BEGIN
EXECUTE IMMEDIATE 'SELECT decode(ROW_ID,null,'N','Y') INTO' || var_Found_table_attribut|| '||NOM_TABLE||' WHERE IF_ROW_BATCH_NUM='||BATCH_NUM;
--dbms_output.put_line('var_Found_table_attribut);
END; |
Merci d'avance pour vos réponses ou suggestions.
Convertir les données d´un tableau entré en paramètre
j' aimerais savoir s' il est possible en Plsql d' écrire une procédure qui prendrait un tableau comme paramètre afin d' effectuer certaines convertions dans celui-ci.
Pour être plus claire voici ce que je tente de faire:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
create or replace ma_proc(table_name in varchar2) as
verif varchar2(40):= dbms_assert.sql_object(table_name); -- pour verifier l´existence de la table dans le dictionnaire de données.
type rty_tab is table of verif%rowtype; -- ici j´ai un prob car le compilateur ne reconnaît pas "verif" comme une table seulement je n´ai pas trouvé d'autre moyen.
tab rty_tab;
res1 varchar2(18);
query1 varchar2(1000):= 'select col1, col2 bulk collect into tab from ' ||verif;
query2 varchar2(1000):= 'update' ||verif|| 'set tab(i).col1 = res1 where rowid = v_rowid'; |
merci pour toutes suggestions