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 :
---------------------------------------------------------------------------
-------------------------------------------------------------------------------
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]
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
Curtir tópico
+ 0
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 ; ^
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.
1 parametro que é de retorno dizendo quandos registros foram alterados.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)