Marcio Thadeu Postado Março 12, 2011 Denunciar Share Postado Março 12, 2011 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)ASDECLARE 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 ENDENDagradeço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Bruno Faria Postado Abril 4, 2011 Denunciar Share Postado Abril 4, 2011 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)) DOBEGINIF ((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')) THENBEGINCODCONTAFINANCEIRA = 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.HISTORICOFROM CONTA_FINANCEIRAWHERE VI = 1 AND VACHOU = 'F' FETCH NEXT FROM AJUDA INTO @VCODIGO, @VHISTORICO Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Marcio Thadeu
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
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.