Ir para conteúdo
Fórum Script Brasil
  • 0

Stored Procedures


Marcio Thadeu

Pergunta

Galera bom dia!

Estou convertendo uma base de dados FireBird para SQL Server. so tem uma procedure na Base FireBird.

alguém poderia me ajudar a converter-la para SQL Server?

Não conheço muito de procedures no Sql Server.

CREATE PROCEDURE NUMCONTRATOHISTORICO

RETURNS (

CODCONTAFINANCEIRA DOUBLE PRECISION,

HISTORICO VARCHAR(6) CHARACTER SET NONE)

AS

DECLARE VARIABLE VI INTEGER;

DECLARE VARIABLE VHISTORICO VARCHAR(117);

DECLARE VARIABLE VCODIGO DOUBLE PRECISION;

DECLARE VARIABLE VACHOU VARCHAR(01);

BEGIN

FOR SELECT CONTA_FINANCEIRA.CODCONTAFINANCEIRA, CONTA_FINANCEIRA.HISTORICO

FROM CONTA_FINANCEIRA

INTO :VCODIGO, :VHISTORICO DO

BEGIN

VI = 1;

VACHOU = 'F';

WHILE (VI <= CHARACTER_LENGTH(:VHISTORICO)) DO

BEGIN

IF ((SUBSTRING(:VHISTORICO FROM VI FOR 3) = '-C0') OR

(SUBSTRING(:VHISTORICO FROM VI FOR 3) = '-C1') OR

(SUBSTRING(:VHISTORICO FROM VI FOR 3) = '-C2') OR

(SUBSTRING(:VHISTORICO FROM VI FOR 3) = '-C3') OR

(SUBSTRING(:VHISTORICO FROM VI FOR 3) = '-C4') OR

(SUBSTRING(:VHISTORICO FROM VI FOR 3) = '-C5') OR

(SUBSTRING(:VHISTORICO FROM VI FOR 3) = '-C6') OR

(SUBSTRING(:VHISTORICO FROM VI FOR 3) = '-C7') OR

(SUBSTRING(:VHISTORICO FROM VI FOR 3) = '-C8') OR

(SUBSTRING(:VHISTORICO FROM VI FOR 3) = '-C9')) THEN

BEGIN

CODCONTAFINANCEIRA = VCODIGO;

HISTORICO = SUBSTRING(:VHISTORICO FROM VI + 1 FOR 6);

VACHOU = 'T';

SUSPEND;

BREAK;

END

VI = VI + 1;

END

IF (VACHOU = 'F') THEN

BEGIN

CODCONTAFINANCEIRA = VCODIGO;

HISTORICO = NULL;

SUSPEND;

END

END

END

agradeço

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Boa Tarde Marcio

Não tenho muito conhecimento em firebird mas ate onde eu eu segui a logica do seu raciocionio eu alterei sua consulta eu não conseguir visualizar qual é o filtro que você faz em.

WHILE (VI <= CHARACTER_LENGTH(:VHISTORICO)) DO

BEGIN

IF ((SUBSTRING(:VHISTORICO FROM VI FOR 3) = '-C0') OR

(SUBSTRING(:VHISTORICO FROM VI FOR 3) = '-C1') OR

(SUBSTRING(:VHISTORICO FROM VI FOR 3) = '-C2') OR

(SUBSTRING(:VHISTORICO FROM VI FOR 3) = '-C3') OR

(SUBSTRING(:VHISTORICO FROM VI FOR 3) = '-C4') OR

(SUBSTRING(:VHISTORICO FROM VI FOR 3) = '-C5') OR

(SUBSTRING(:VHISTORICO FROM VI FOR 3) = '-C6') OR

(SUBSTRING(:VHISTORICO FROM VI FOR 3) = '-C7') OR

(SUBSTRING(:VHISTORICO FROM VI FOR 3) = '-C8') OR

(SUBSTRING(:VHISTORICO FROM VI FOR 3) = '-C9')) THEN

BEGIN

CODCONTAFINANCEIRA = VCODIGO;

HISTORICO = SUBSTRING(:VHISTORICO FROM VI + 1 FOR 6);

VACHOU = 'T';

SUSPEND;

BREAK;

A coluna VHISTORICO é da tabela CONTA_FINANCEIRA ?

Segue ate onde eu entendir.

CREATE PROCEDURE NUMCONTRATOHISTORICO ( @CODCONTAFINANCEIRA BIGINT OUTPUT , @HISTORICO VARCHAR(6)OUTPUT )

AS

DECLARE @VI INT;

DECLARE @VHISTORICO VARCHAR(117);

DECLARE @VCODIGO BIGINT;

DECLARE @VACHOU VARCHAR(01);

BEGIN

DECLARE AJUDA CURSOR FOR

SELECT

CONTA_FINANCEIRA.CODCONTAFINANCEIRA,

CONTA_FINANCEIRA.HISTORICO

FROM

CONTA_FINANCEIRA

WHERE

VI = 1

AND VACHOU = 'F'

FETCH NEXT FROM AJUDA INTO @VCODIGO, @VHISTORICO

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...