- Este tópico contém 3 respostas, 2 vozes e foi atualizado pela última vez 10 anos, 5 meses atrás por Fábio Prado.
-
AutorPosts
-
16 de julho de 2014 às 6:30 pm #106760RoninParticipante
Bom dia,
Pessoal, estou tentando construir uma procedure que será chamada por uma aplicação C# para alimentar um grid, porém estou tendo problemas na execução, eu preciso passar um parametro de filial e retorno um campo chamado nível.
Obrigado,
CREATE OR REPLACE PROCEDURE sp_indicadorperdavenda(
in_filial IN char,
out_nivel1 out char)IS
vout_nivel1 char ;BEGIN
select distinct TG1.BCODGRUPOPROD1TGRP1 N1–,TG1.STRDESCRGRUPOPRODTGRP1 MERC1, TG2.BCODGRUPOPROD2TGRP2 N2, TG2.STRDESCRGRUPOPRODTGRP2 MERC2, TO_NUMBER(SUM(ZB5.ZB5_TOTCUS)) PERDACONHECIDA, TO_NUMBER(‘0’) PERDADESCONHECIDA, TO_NUMBER(‘0′) VENDA
into vout_nivel1
from siga.zb5010 zb5
JOIN INFOMIL.tprodutostgrupos TG on tg.lcodinternoprodutotprdgrp = zb5.zb5_cod and tg.bcodestruturatprdgrp = 5
join INFOMIL.tprodutosgrupo1 tg1 on tg1.BCODGRUPOPROD1TGRP1 = tg.BCODGRUPOPROD1TPRDGRP and tg1.BCODESTRUTURATGRP1 = 5
join INFOMIL.tprodutosgrupo2 tg2 on tg2.BCODGRUPOPROD1TGRP2 = tg.BCODGRUPOPROD1TPRDGRP and tg2.BCODGRUPOPROD2TGRP2 = tg.BCODGRUPOPROD2TPRDGRP
and tg1.BCODGRUPOPROD1TGRP1 = tg2.BCODGRUPOPROD1TGRP2 and tg2.BCODESTRUTURATGRP2 = 5
where zb5_filial = in_filial and TO_CHAR(zb5_data,’YYYYMMDD’) >= ‘20140301’ and TO_CHAR(zb5_data,’YYYYMMDD’) <= '20140430'; end ; exec sp_indicadorperdavenda ('05'); após a execução da procedure, retorna as msgs abaxio rro ao iniciar na linha 79 no comando exec sp_indicadorperdavenda ('05') Relatório de erro: ORA-06550: linha 1, coluna 7: PLS-00306: wrong number or types of arguments in call to 'SP_INDICADORPERDAVENDA' ORA-06550: linha 1, coluna 7: PL/SQL: Statement ignored 06550. 00000 - "line %s, column %s:n%s" *Cause: Usually a PL/SQL compilation error. *Action:16 de julho de 2014 às 8:28 pm #106762Fábio PradoParticipanteRonin,
A Procedure tem 2 parâmetros, 1 de entrada e 1 de saída. Na aplicação vc tem que chamá-la informado valores para todos os parâmetros e não somente para os parâmetros de entrada, como vc fez.
Ao invés de:
exec sp_indicadorperdavenda ('05');
Faça algo parecido com:
exec sp_indicadorperdavenda ('05', nome_variavel_da_aplicacao);
[]s
16 de julho de 2014 às 10:53 pm #106763RoninParticipanteOlá fábio,
Conforme código(plsql), ficariam assim então ? exec sp_indicadorperdavenda ('05',out_nivel1)
Para parametros de saída eu ñ preciso passar valor, correto ?
;Erro ao iniciar na linha 80 no comando
exec sp_indicadorperdavenda (’05’,’out_nivel1′)
Relatório de erro:
ORA-06550: linha 1, coluna 36:
PLS-00363: expression ‘out_nivel1’ cannot be used as an assignment target
ORA-06550: linha 1, coluna 7:
PL/SQL: Statement ignored
06550. 00000 – “line %s, column %s:n%s”
*Cause: Usually a PL/SQL compilation error.
*Action:18 de julho de 2014 às 6:04 am #106766Fábio PradoParticipanteRonin,
Vc não pode passar valor para um parâmetro de saída. Vc tem que declarar uma variável na aplicação e passar ela na posição do parâmetro de saída. Maiores detalhes não vou conseguir te passar pq faz muito tempo que eu não programo em C#. Se vc tiver dúvidas de como escrever código para isso, sugiro que vc pegue ajuda em um fórum qq de programadores em C#, pois lá vc conseguirá ajuda mais fácil, ok?
[]s
-
AutorPosts
- Você deve fazer login para responder a este tópico.