Fórum Problemas com Stored Procedure no Interbase #220257

12/03/2004

0

Desenvolvi varias tabelas em um determinado banco de dados
utilizando o SQL Server 7.0, sendo que criei stored procedures para
executar consultas junto a essas tabelas, isso tudo utilizando como
Front End o Delphi 7.0 obtive excelente resultado ou seja tudo
funciona perfeitamente , porém atualmente migrei os bancos para o
Interbase 7.1 e quando tentei contruir uma stored procedure me deparei
com os seguintes erros :

erro linha 1 , nº 104

Segue o código da procedure que era realizada perfeitamente no SQL Server
e que quando roda no Interbase da erro :

---------------------------------------------------------------------------
CREATE PROCEDURE ADVOGA
@DATA_INI DATETIME,
@DATA_FINAL DATETIME ,
@CIA VERCHAR(4)
AS

SELECT Cad_Log.DP, Cad_Log.Nome_Rua, Tab_Infracao.Tipo_Infracao,
Ocorrencia.Data, Ocorrencia.Horario, Ocorrencia.Flagrante

FROM Ocorrencia Ocorrencia, Cad_Log Cad_Log ,
Tab_Infracao Tab_Infracao

WHERE Ocorrencia.Cod_Infracao = Tab_Infracao.Cod_Infracao AND 
             Ocorrencia.Codigo_Rua = Cad_Log.Codigo_Rua  AND 
             Ocorrencia.Data >= @DATA_INI AND 
             Ocorrencia.Data <= @DATA_FINAL   AND
             Cad_Log.Cia = @CIA  AND 
             Ocorrencia.Flagrante ="S"
             Order by Tab_Infracao.Tipo_Infracao

EXEC ADVOGA "2000-04-01", "2000-08-30", "02"

-------------------------------------------------------------------------------
Deixando claro o código acima funciona perfeitamente no SQL Server 7.0 / 2000
porém no Interbase 7.1 da erro na primeira linha e reclama do ´@´ ou seja não posso
usar arroba?

Como ficaria isso no Interbase poderia me explicar o código pois, os tutoriais sobre
procedures no Interbase estão deixando a desejar e estão bem fracos e execuntando
basico

Obrigado[/code]


Gladiador

Gladiador

Responder

Posts

13/03/2004

Marcos Conceição

Realmente o @ no SQLserver funciona como forma de identificacao de parametros. Segue um exemplo para vc tirar de base.
Nessa função ela Zera todos produtos com quantidade igual a zero, tenho 1 parametro WQUANT123 para escolher se vou excluir a quantidade deposito ou quantidade Seção ou ambos, (parametro de entrada)
1 parametro que é de retorno dizendo quandos registros foram alterados.

CREATE PROCEDURE ´PROC_ZERAQUANT´
(
´WQUANT123´ INTEGER
)
RETURNS
(
´CONTAR´ INTEGER
)
AS
BEGIN EXIT; END ^


ALTER PROCEDURE ´PROC_ZERAQUANT´
(
´WQUANT123´ INTEGER
)
RETURNS
(
´CONTAR´ INTEGER
)
AS
begin
if (:WQUANT123=1) then
begin
update produto set quantidade=0 where quantidade<0;
select count(*) from produto where quantidade<0 or quant_dep<0 into :CONTAR;
end
if (:WQUANT123=2) then begin
update produto set quantidade=0 where quantidade<0;
update produto set quant_dep=0 where quant_dep<0;
select count(*) from produto where quantidade<0 or quant_dep<0 into :CONTAR;

end
if (:WQUANT123=3) then begin
update produto set quant_dep=0 where quant_dep<0;
select count(*) from produto where quant_dep<0 into :CONTAR;
end
suspend;
end
^

SET TERM ; ^


Responder

Gostei + 0

13/03/2004

Marcos Conceição

Nessa função ela Zera todos produtos com quantidade [b:affd532e08]MENOR QUE[/b:affd532e08] zero, tenho 1 parametro WQUANT123 para escolher se vou excluir a quantidade deposito ou quantidade Seção ou ambos, (parametro de entrada)
1 parametro que é de retorno dizendo quandos registros foram alterados.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar