J'ai besoin de créer un script sql qui, à partir d'une table de table, va générer une requête SQL dynamique de la façon suivante: select ID || ',' || NAME || ',' || CODE de TABLE_TEST;Création de sélection SQL dynamique à partir des colonnes de la table
Le nom de la table est reçu en tant que paramètre d'entrée.
Mon script SQL est le suivant;
spool exportTable.log
SET HEAD OFF
SET TRIMOUT ON
SET TRIMSPOOL ON
SET LINESIZE 32000
SET PAGESIZE 0
SET TERMOUT OFF
SET ECHO OFF
SET COLSEP ,
procedure CreerReq(sTable in Varchar) is
dbms_output.put_line('dans CreerReq');
sqlreq VARCHAR2(2000);
sChaine VARCHAR2(4000):='select';
TYPE t_tab IS TABLE OF VARCHAR2(4000);
l_tab t_tab;
l_tab_Id t_tab;
l_ref_cursor SYS_REFCURSOR;
dbms_output.put_line(sChaine);
begin
sqlreq := 'select column_name from all_tab_cols WHERE table_name' || sTable;
dbms_output.put_line(sqlreq);
OPEN l_ref_cursor FOR sqlreq;
LOOP
FETCH l_ref_cursor BULK COLLECT INTO l_tab_Id,l_tab limit 1000;
EXIT WHEN l_tab.COUNT=0;
FOR i IN l_tab.first .. l_tab.last LOOP
sChaine:=l_tab(i) ' || ','';
END LOOP;
CLOSE l_ref_cursor;
dbms_output.put_line(sChaine);
End CreerReq;
BEGIN
dbms_output.put_line('&1');
CreerReq(&1);
END;
/
spool off;
Cependant, cela me retournaient l'erreur suivante:
ORA-00900: invalid SQL statement
Toute aide s'il vous plaît?