[firebase-br] Consegui mas faltam duas coisas.
//---- Kelsie.Z.Marshall ----//
kelsie.z.marshall em gmail.com
Sáb Ago 8 18:45:32 -03 2009
Consegui abaixo a rotina com a verificação do CNPJ na tabela.
1)
Eu queria passar o nome da tabela como parametro até criei o parametro
IN_TABELA mas quando substituo pelo nome da tabela no SQL FROM dá está
mensagem
ISC ERROR CODE:335544569
ISC ERROR MESSAGE:
Dynamic SQL Error
SQL error code = -204
Table unknown
IN_TABELA
DECLARE VARIABLE CNPJ_TEMP VARCHAR(14);
DECLARE VARIABLE TAB_TEMP VARCHAR(250);
DECLARE VARIABLE D1 integer;
DECLARE VARIABLE D2 integer;
DECLARE VARIABLE CALCULADO char(2);
DECLARE VARIABLE DIGITADO char(2);
BEGIN
FOR
SELECT CNPJ
FROM BIG_TABLE /*----------aqui substituir por INTABELA não funciona */
INTO :CNPJ_TEMP
DO
BEGIN
D1 = 0;
D1 = D1 + cast(substrlen(CNPJ_TEMP,1,1) as integer) * 5;
D1 = D1 + cast(substrlen(CNPJ_TEMP,2,1) as integer) * 4;
D1 = D1 + cast(substrlen(CNPJ_TEMP,3,1) as integer) * 3;
D1 = D1 + cast(substrlen(CNPJ_TEMP,4,1) as integer) * 2;
D1 = D1 + cast(substrlen(CNPJ_TEMP,5,1) as integer) * 9;
D1 = D1 + cast(substrlen(CNPJ_TEMP,6,1) as integer) * 8;
D1 = D1 + cast(substrlen(CNPJ_TEMP,7,1) as integer) * 7;
D1 = D1 + cast(substrlen(CNPJ_TEMP,8,1) as integer) * 6;
D1 = D1 + cast(substrlen(CNPJ_TEMP,9,1) as integer) * 5;
D1 = D1 + cast(substrlen(CNPJ_TEMP,10,1) as integer) * 4;
D1 = D1 + cast(substrlen(CNPJ_TEMP,11,1) as integer) * 3;
D1 = D1 + cast(substrlen(CNPJ_TEMP,12,1) as integer) * 2;
D1 = 11 - (mod(D1,11));
if (D1>=10) then D1=0;
D2 = 0;
D2 = D2 + cast(substrlen(CNPJ_TEMP,1,1) as integer) * 6;
D2 = D2 + cast(substrlen(CNPJ_TEMP,2,1) as integer) * 5;
D2 = D2 + cast(substrlen(CNPJ_TEMP,3,1) as integer) * 4;
D2 = D2 + cast(substrlen(CNPJ_TEMP,4,1) as integer) * 3;
D2 = D2 + cast(substrlen(CNPJ_TEMP,5,1) as integer) * 2;
D2 = D2 + cast(substrlen(CNPJ_TEMP,6,1) as integer) * 9;
D2 = D2 + cast(substrlen(CNPJ_TEMP,7,1) as integer) * 8;
D2 = D2 + cast(substrlen(CNPJ_TEMP,8,1) as integer) * 7;
D2 = D2 + cast(substrlen(CNPJ_TEMP,9,1) as integer) * 6;
D2 = D2 + cast(substrlen(CNPJ_TEMP,10,1) as integer) * 5;
D2 = D2 + cast(substrlen(CNPJ_TEMP,11,1) as integer) * 4;
D2 = D2 + cast(substrlen(CNPJ_TEMP,12,1) as integer) * 3;
D2 = D2 + D1 * 2;
D2 = 11 - (mod(D2,11));
if (D2>=10) then D2=0;
CALCULADO = (cast(D1 as char) || cast(D2 as char));
DIGITADO = substrlen(CNPJ_TEMP,13,1) || substrlen(CNPJ_TEMP,14,1);
IF (CALCULADO!=DIGITADO) then
DELETE FROM BIG_TABLE WHERE CNPJ = :CNPJ_TEMP; /*----------aqui
substituir por INTABELA não funciona */
SUSPEND;
END
END
2)
Agora vou fazer o que o Eduardo falou uma UDF e depois comparar os
resultados.
Alguém sabe por onde começo ?
Mais detalhes sobre a lista de discussão lista