Osvaldo.

Tentei mais algumas vezes com o ANY e não consegui.
Segue minha função:

CREATE OR REPLACE FUNCTION vw_relatorio_cliente (
            p_status INTEGER[],
            p_pedido INTEGER[],
            p_cliente_nome VARCHAR,
            p_cliente_cpfcnpj VARCHAR,
            p_cliente_email VARCHAR,
            p_data_ins_inicial TIMESTAMP,
            p_data_ins_final TIMESTAMP,
            p_data_upd_inicial TIMESTAMP,
            p_data_upd_final TIMESTAMP,
            p_canal_nome VARCHAR[],
            p_pacote_nome VARCHAR[]
            ) RETURNS SETOF campos_client AS
$$
DECLARE
 var_row   campos_client%ROWTYPE;
 var_record   RECORD;
BEGIN
 FOR var_record IN
        SELECT campos
        FROM tabela
        WHERE pedido.cod ANY (p_pedido)
    LOOP
  var_row.pedido_codigo := var_record.pedido_codigo;
  var_row.pedido_data_entrada := var_record.pedido_data_ins;
  var_row.pedido_data_alteracao := var_record.pedido_data_upd;
  var_row.status_codigo := var_record.status_codigo;
  var_row.status_nome := var_record.status_nome;
  var_row.pacote_codigo := var_record.pacote_codigo;
  var_row.pacote_quantidade := var_record.pacote_quantidade;
  var_row.pacote_nome := var_record.pacote_nome;
  var_row.pacote_valor := var_record.pacote_valor;
  var_row.pedido_frete := var_record.pedido_frete;
  var_row.pedido_parcelas := var_record.pedido_qtd_parcelas;
  var_row.pedido_forma_de_pagamento := var_record.pedido_forma_de_pagamento;
  var_row.entrega_etiqueta := var_record.entrega_etiqueta;
  var_row.entrega_endereco := var_record.entrega_endereco;
  var_row.entrega_numero := var_record.entrega_numero;
  var_row.entrega_complemento := var_record.entrega_complemento;
  var_row.entrega_bairro := var_record.entrega_bairro;
  var_row.entrega_cidade := var_record.entrega_cidade;
  var_row.entrega_cep := var_record.entrega_cep;
  var_row.entrega_estado := var_record.entrega_estado;
  var_row.cliente_cpfcnpj := var_record.cliente_cpfcnpj;
  var_row.cliente_nome := var_record.cliente_nome;
  var_row.pedido_telefone := var_record.pedido_telefone;
  var_row.cliente_endereco := var_record.cliente_endereco;
  var_row.cliente_numero := var_record.cliente_numero;
  var_row.cliente_complemento := var_record.cliente_complemento;
  var_row.cliente_bairro := var_record.cliente_bairro;
  var_row.cliente_cidade := var_record.cliente_cidade;
  var_row.cliente_cep := var_record.cliente_cep;
  var_row.cliente_email := var_record.cliente_email;
  var_row.cliente_estado := var_record.cliente_estado;
  var_row.canal_codigo := var_record.canal_codigo;
  var_row.canal_nome := var_record.canal_nome;
  var_row.pedido_observacao := var_record.pedido_observacao;
  var_row.numero_sedex := var_record.entrega_etiqueta;

  RETURN NEXT var_row;
    END LOOP;

    RETURN;
END;
$$ LANGUAGE 'plpgsql';

Algum problema com o código?
Abs


Em 10/11/08, Daniel Robert Costa<[EMAIL PROTECTED]> escreveu:
> Osvaldo.
> Não funcionou o ANY ( p_numeros ).
> Meu postgres é 8.1 e ainda não migramos.
> Algo mais que eu possa tentar?
> Tentei já diversas coisas e até agora nada.
> Obrigado.
> Abs
>
>
>
> Em 10/11/08, Daniel Robert Costa<[EMAIL PROTECTED]> 
> escreveu:
>> Boa tarde galera.
>>
>> Tô com uma dúvida e queria saber se dá certo.
>> Estou montando uma função onde alguns dos parâmetros são arrays
>> (INTEGER[],
>> VARCHAR[]).
>> Em determinado momento da função, eu precisava utilizar o conteúdo do
>> parametro INTEGER[] como uma lista, mas manter o tipo INTEGER dos itens 
>> da
>> lista.
>> Por exemplo:
>>
>> CREATE FUNCTION teste ( p_numeros INTEGER[] ) RETURNS SETOF tipo AS
>> $$
>> DECLARE
>>     var_record RECORD;
>> BEGIN
>>     FOR var_record IN
>>         SELECT blablabla
>>         FROM tabela
>>         WHERE numero IN ( p_numeros )
>>     LOOP
>>         /* bla bla bla */
>>     END LOOP;
>>     RETURN;
>> END;
>> $$ LANGUAGE 'plpgsql'
>>
>> É possível realizar tal manobra?
>> A única função que encontrei é a array_to_string, mas não me serve, pois
>> os
>> campos devem ser numéricos.
>>
>
>
> Avalie a possibilidade de usar:
>   WHERE numero = ANY (p_numeros)
>


Coloque aqui o seu SELECT.
Como você pode ver na documentação:
http://www.postgresql.org/docs/8.1/interactive/functions-comparisons.html#AEN13394
   expression operator ANY (array expression)
já estava implementado na versão 8.1

Osvaldo
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a