Queria saber como eu faço para pegar um select e jogar em variáveis para conseguir utilizar no update.
CREATE OR REPLACE PROCEDURE bdautolab.SP_Fornecedor (vCofFornecedor integer)
IS
vVinculo varchar2(10);
BEGIN
insert into addesenv.fornecedor
( RAZAOSOCIAL, TIPOPESSOA, CPFCGC, ENDERECO, CEP,
TIPOFORNECEDOR, FANTASIA, RGIE, EMAIL, SITE, VINCULO
)
select
a.cli_razaosocial_a RAZAOSOCIAL,
case when a.Tipocliente_i = 0 then 'J' else 'F' end TIPOPESSOA,
replace(replace(replace(a.cli_cadastronacional_a, '.', ''), '/', ''), '-', '') CPFCGC,
a.cli_endereco_a ENDERECO,
a.cli_cep_a CEP,
'C' TIPOFORNECEDOR,
a.cli_nomecliente_a FANTASIA,
SUBSTR(a.cli_inscricaoestadual_a, 1, 20) RGIE,
a.cli_email_a EMAIL,
a.cli_homepage_a SITE,
'G' VINCULO
from
bdautolab.cliente a
left join addesenv.fornecedor b on (b.CPFCGC = replace(replace(replace(a.cli_cadastronacional_a, '.', ''), '/', ''), '-', ''))
where
b.CodFornecedor is null
and a.cli_codcliente = vCofFornecedor;
update
addesenv.fornecedor
set
RAZAOSOCIAL = (select cli_razaosocial_a from bdautolab.cliente where cli_codcliente = vCofFornecedor),
TIPOPESSOA = (select case when Tipocliente_i = 0 then 'J' else 'F' end from bdautolab.cliente where cli_codcliente = vCofFornecedor),
ENDERECO = (select cli_endereco_a from bdautolab.cliente where cli_codcliente = vCofFornecedor),
CEP = (select cli_cep_a from bdautolab.cliente where cli_codcliente = vCofFornecedor),
FANTASIA = (select cli_nomecliente_a from bdautolab.cliente where cli_codcliente = vCofFornecedor),
RGIE = (select SUBSTR(cli_inscricaoestadual_a, 1, 20) from bdautolab.cliente where cli_codcliente = vCofFornecedor),
EMAIL = (select cli_email_a from bdautolab.cliente where cli_codcliente = vCofFornecedor),
SITE = (select cli_homepage_a from bdautolab.cliente where cli_codcliente = vCofFornecedor),
VINCULO =
(
select
case when
( select count(*) from bdautolab.cliente a
inner join addesenv.fornecedor b on (b.CPFCGC = replace(replace(replace(a.cli_cadastronacional_a, '.', ''), '/', ''), '-', ''))
where a.cli_codcliente = vCofFornecedor and b.vinculo like '%G%') = 0 then 'G'
else nvl(Vinculo, '') || 'G' end
from
bdautolab.cliente a
inner join addesenv.fornecedor b on (b.CPFCGC = replace(replace(replace(a.cli_cadastronacional_a, '.', ''), '/', ''), '-', ''))
where
a.cli_codcliente = vCofFornecedor
)
where
CPFCGC =
( select
replace(replace(replace(a.cli_cadastronacional_a, '.', ''), '/', ''), '-', '')
from
bdautolab.cliente a
where
a.cli_codcliente = vCofFornecedor
);
END SP_Fornecedor;
Marlon