[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