Erro em uma declaração com parametros

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
pc_delphi
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 128
Registrado em: Qui, 29 Mai 2008 6:44 pm
Localização: São Paulo
Tudo posso, nAquel que me fortalece
Filipenses 4:13

Peguei essa declaração de um fonte em Delphi e não estou conseguindo substituir os parâmetros. Se vocês verem, criei umas variáveis pra ver se funcionam,mas não funcionou. Outra coisa é o formato de data. Como eu deveria passar as datas? Mas uma pergunta. Como eu faço pra pegar uma data em formato Float e passar para o nosso formato de data?:
Ex: O Delphi me gera:2598,35689 como faço para representar em DD/MM/YYYY?
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

to_char (seu_long, 'yyyymmdd')
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5018
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Eu não entendi que formato de data é esse :-(

Esse número representa qual dia ?
pc_delphi
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 128
Registrado em: Qui, 29 Mai 2008 6:44 pm
Localização: São Paulo
Tudo posso, nAquel que me fortalece
Filipenses 4:13

em realidade a maior necessidade é fazer esse script rodar. As variáveis VNOX,VNOY e etc... fiz na tentativa de colocar no lugar dos parametros,
:VNOX,:VNOY e etc... Como rodar isso?

Selecionar tudo

DECLARE
  COORDS    PCK_MANOBRASRP.ADESENHO;
  VETSIMU   PCK_OPERACAO.V_UT_DESLIG_PROGR;
  RETORNO   NUMBER;
  MENSAGEM  VARCHAR2(2000) := '';
  I         NUMBER;
  P         VARCHAR2(2000);
  R         NUMBER;
  VNOX      NUMBER;
  VNOY      NUMBER;
  VFONTEX   NUMBER; 
  VFONTEY   NUMBER;
  VCOR      NUMBER;
  VTRACO    NUMBER;
  VESPESSURA NUMBER;
BEGIN
  RETORNO := PCK_MANOBRAS_COD.INCLUI_MANOBRA_EXEC(
                                  2009,
                                  38437,
                                  1,
                                  'COND305',
                                  '',
                                  'F',
                                  '04/11/2009 15:00:00',
                                  '04/11/2009 16:00:00', 
                                  0,
                                  'TELBO02',
                                  '',
                                  'EM',
                                  MENSAGEM,
                                  COORDS,
                                  VETSIMU,
                                  '',
                                  FALSE,
                                  FALSE );
  R := RETORNO;
  P := MENSAGEM;
  IF RETORNO=0 THEN
    R := RETORNO;
    --COMMIT;
    FOR I IN 1..COORDS.COUNT LOOP
      :VNOX(I)       := COORDS(I).NOX;
      :VNOY(I)       := COORDS(I).NOY;
      :FONTEX(I)     := COORDS(I).FONTEX;
      :VFONTEY(I)    := COORDS(I).FONTEY;
      :VCOR(I)       := COORDS(I).COR;
      :VTRACO(I)     := COORDS(I).TRACO;
      :VESPESSURA(I) := COORDS(I).ESPESSURA;
    END LOOP;
  END IF;
END;
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

Selecionar tudo

:VNOX(I)       := COORDS(I).NOX; 
não tem esse dois pontos no inicio



e tambem a variavel so tem um lugar para armazenar valor.. você teria de criar um outro cursor

Selecionar tudo

VNOX       := COORDS(I).NOX; 
pc_delphi
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 128
Registrado em: Qui, 29 Mai 2008 6:44 pm
Localização: São Paulo
Tudo posso, nAquel que me fortalece
Filipenses 4:13

Em realidade não existe as variáveis abaixo no script original:

Selecionar tudo

VNOX      NUMBER;
VNOY      NUMBER;
VFONTEX   NUMBER; 
VFONTEY   NUMBER;
VCOR      NUMBER;
VTRACO    NUMBER;
VESPESSURA NUMBER;
O que existe são os parãmetros. Eu as declarei para ver se funcionavam assim. Não consigo fazer esse script rodar.
RodrigoValentim
Moderador
Moderador
Mensagens: 367
Registrado em: Ter, 25 Mar 2008 3:41 pm
Localização: Salvador - BA
Rodrigo Valentim
Analista de Sistemas
Oracle Developer

Campanha: Faça uma pesquisa antes de perguntar!!!

Que tal postar o script original?
outra coisa interessante é sempre postar o ERRO, ajuda muito.

Porém, segue aí algumas dicas que podem fazer sua rotina executar.


Se o parametro é data, não passe uma STRING. Esse erro é mais do que comum no mundo da programação...

Selecionar tudo

to_date('04/11/2009 15:00:00', 'dd/mm/yyyy hh24:mi:ss')
pc_delphi
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 128
Registrado em: Qui, 29 Mai 2008 6:44 pm
Localização: São Paulo
Tudo posso, nAquel que me fortalece
Filipenses 4:13

Mudei, mas ainda não sei o que fazer com os parâmetros:

Selecionar tudo

DECLARE
  COORDS    PCK_MANOBRASRP.ADESENHO;
  VETSIMU   PCK_OPERACAO.V_UT_DESLIG_PROGR;
  RETORNO   NUMBER;
  MENSAGEM  VARCHAR2(2000) := '';
  I         NUMBER;
  P         VARCHAR2(2000);
  
  BEGIN
  RETORNO := PCK_MANOBRAS_COD.INCLUI_MANOBRA_EXEC(
                                  2009,
                                  38437,
                                  1,
                                  'COND305',
                                  '',
                                  'F',
                                  to_date('04/11/2009 15:00:00','dd/mm/rrrr hh24:mi:ss'),
                                  to_date('04/11/2009 15:00:00','dd/mm/rrrr hh24:mi:ss'), 
                                  0,
                                  'TELBO02',
                                  '',
                                  'EM',
                                  MENSAGEM,
                                  COORDS,
                                  VETSIMU,
                                  '',
                                  FALSE,
                                  FALSE );
  R := RETORNO;
  P := MENSAGEM;
  IF RETORNO=0 THEN
    R := RETORNO;
    --COMMIT;
    FOR I IN 1..COORDS.COUNT LOOP
      :VNOX(I)       := COORDS(I).NOX;
      :VNOY(I)       := COORDS(I).NOY;
      :FONTEX(I)     := COORDS(I).FONTEX;
      :VFONTEY(I)    := COORDS(I).FONTEY;
      :VCOR(I)       := COORDS(I).COR;
      :VTRACO(I)     := COORDS(I).TRACO;
      :VESPESSURA(I) := COORDS(I).ESPESSURA;
    END LOOP;
  END IF;
END;
JOPA
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 58
Registrado em: Sex, 30 Out 2009 9:52 am
Localização: Salvador - BA
Contato:
Atenciosamente,

João Paulo A. C. do Bomfim

"Deu certo? Deixa! Funcionou? Não mexa!"

Prezado,

É importante postar o Erro para que tenha um apoio e que tenha este apoio mais rápido.

:?:

Se você observar o código há algo tipo:

Selecionar tudo

R := RETORNO; 
Logo depois tem:

Selecionar tudo

IF RETORNO=0 THEN 
    R := RETORNO;
Ou seja, R assume o valor de RETORNO. Até aí beleza. Mas, se RETORNO for 0, R = 0. Logo depois você verifica se RETORNO for 0, você faz a mesma coisa - R=0.

Apresente os erros e descreva o que deseja fazer.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes