[firebase-br] Trabalhando com VARCHAR em SP

Mario H. brujeria em task.com.br
Qua Abr 12 20:40:10 -03 2006


Ae pessoal mais uma duvida com SP,

gostaria que minha SP fizesse a montagem do SQL de INSERÇÃO. Isto deve ao 
fato de, se quero por exemplo incluir um fabricante, esta procedure pega os 
dados e ja faz a Inserção em PESSOAS->FABRICANTES->LOCAIS.
Ai ta, como faço para esta SP fazer a montagem do sql?
Abaixo do email tem como estou fazendo, mas estou tendo os seguintes 
problemas:

1. Como concatenar dois VARCHAR em um so, desconsiderando os espações em 
brancos.
    Isto é,  se eu tenho:
    NOME VARCHAR(50) = "MEU NOME 
"
    SQL VARCHAR(100)="INSERT INTO .......... 
"
    Dai eu gostaria de ter uma maneira de fazer:
    SQL=SQL||NOME;
    e que produzisse SQL="INSERT INTO... MENU NOME                      ", 
sem que de um overflow.. afinal somando         SQL de varchar(50) com ele 
mesmo da-se um varchar(100), superando assim o valor de SQL.

2. Outra dificuldade seria na hora de montar o sql eu precisaria colocar a 
variavel entre ''; Ou seja, algo como QuotedStr que temos no Delph.
Pensei em usar algo tipo SQL='INSERT INTO >> VALUES ('''||:NOME

Qualquer sugestão será muito bem vinda,
Obrigado,
Mario



SET TERM ^ ;
CREATE PROCEDURE SP_INSERIR_FABRICANTES (
    CNPJ DOUBLE PRECISION,
    EMAIL VARCHAR(50) CHARACTER SET NONE,
    NOME VARCHAR(50) CHARACTER SET NONE)
AS
DECLARE VARIABLE SQL2 VARCHAR(100);
DECLARE VARIABLE SQL1 VARCHAR(100);
DECLARE VARIABLE SQL VARCHAR(500);
begin
   SQL1='INSERT INTO PESSOAS(NOME,';
  SQL2=') VALUES ('||:NOME;
  if(EMAIL!=0) THEN
  BEGIN
    SQL1=:SQL1||',EMAIL';
    SQL2=:SQL2||','||:EMAIL;
  END
   EXECUTE statement :SQL||:SQL2||')';
  suspend;
end^
SET TERM ; ^ 





Mais detalhes sobre a lista de discussão lista