2010/4/7 Jose Luis Ramos <[email protected]>:
> Gostaria de uma ajuda no FOR LOOP abaixo. Não sei como maniular as variáveis
> dentro do FOR LOOP:
>
>
> -- cria schema auxiliar
> CREATE SCHEMA dump_aux;
>
> -- tabela para guardar os nomes das tabelas cdrger* disponíveis
>
> DROP TABLE TABELAS_CDRGER;
>
> CREATE TABLE TABELAS_CDRGER AS
> SELECT TABLENAME
> FROM PG_TABLES LIMIT 0;
>
> -- preenche tabela auxiliar com nomes das tabelas cdrger* disponíveis
> INSERT INTO TABELAS_CDRGER
> SELECT TABLENAME
> FROM PG_TABLES
> WHERE TABLENAME LIKE 'cdrger%';
>
> COMMIT;
>
> DECLARE
>
> COUNT_REGS    INT;
> REG_TAB RECORD;
>
> BEGIN
> -- para cada tabela cdrger*, cria uma igual no schema dump_aux e preenche
> -- com amostragem de x% dos dados da tabela cdrger* original
>
> FOR REG_TAB IN SELECT TABLENAME AS NOME_TAB_CDRGER
>     FROM tabelas_cdrger Loop
>     SELECT INTO COUNT_REGS COUNT(*) FROM REG_TAB.NOME_TAB_CDRGER;
>     IF COUNT_REGS > 0 THEN
>         CREATE TABLE REG_TAB.DUMP_AUX.NOME_TAB_CDRGER AS
>         SELECT * FROM REG_TAB.NOME_TAB_CDRGER LIMIT 0;
>         INSERT INTO DUMP_AUX.NOME_TAB_CDRGER
>         SELECT *
>         FROM REG_TAB.NOME_TAB_CDRGER
>         WHERE (
>         CAST(
>          SUBSTRING(
>          ENCODE(cstring_send(tidout(ctid)),'escape'),2,
>          position(',' in rtrim( encode(cstring_send(tidout(ctid)),'escape')
> ))-2 )
>          as int) * 199+
>         cast(
>          substring(
>          encode(cstring_send(tidout(ctid)),'escape'),
>          position(',' in encode(cstring_send(tidout(ctid)),'escape'))+1,
>          length(rtrim(encode(cstring_send(tidout(ctid)),'escape'))) -
> position(','
>         in encode(cstring_send(tidout(ctid)),'escape'))-1 )
>          as int) )
>         % 10=1;
>     END IF;
> END LOOP;
> END;
>


Veja:
http://www.postgresql.org/docs/current/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN

Monte uma string contendo seu SELECT e utilize-a em um comando EXECUTE
ou EXECUTE INTO.

Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a