Procedure SQL no Delphi
Alguém poderia me explicar como faço praa executar uma procedure que foi desenvolvida em SQL no IBExpert, através do Delphi, como passo os parametros e como capturo os resultados?
segue o código da procedure:
CREATE PROCEDURE NOVOCOD(
ARQUIVO VARCHAR(3))
RETURNS (
CODNOVO VARCHAR(10))
AS
BEGIN
IF (:ARQUIVO = CLI) THEN
BEGIN
SELECT MAX(CODIGO) FROM CLIENTE
INTO :CODNOVO;
END
IF (:ARQUIVO = FOR) THEN
BEGIN
SELECT MAX(CODIGO) FROM FORNECEDOR
INTO :CODNOVO;
END
IF (:ARQUIVO = EST) THEN
BEGIN
SELECT MAX(CODIGO) FROM ESTOQUE
INTO :CODNOVO;
END
IF (:ARQUIVO = NOT) THEN
BEGIN
SELECT MAX(NOTA) FROM VENDAS
INTO :CODNOVO;
END
IF (:ARQUIVO = TRA) THEN
BEGIN
SELECT MAX(CODIGO) FROM TRANSPORTE
INTO :CODNOVO;
END
IF (:ARQUIVO = ICM) THEN
BEGIN
SELECT MAX(CODIGO) FROM TRIICMS
INTO :CODNOVO;
END
IF (:ARQUIVO = PEC) THEN
BEGIN
SELECT MAX(NUMERO) FROM PEDCOMPRA
INTO :CODNOVO;
END
IF (:ARQUIVO = PEV) THEN
BEGIN
SELECT MAX(NUMERO) FROM PEDVENDA
INTO :CODNOVO;
END
IF (:ARQUIVO = ORC) THEN
BEGIN
SELECT MAX(NUMERO) FROM ORCAMENTO
INTO :CODNOVO;
END
IF (:ARQUIVO = CON) THEN
BEGIN
SELECT MAX(CODIGO) FROM CONVENIO
INTO :CODNOVO;
END
IF (:ARQUIVO = SER) THEN
BEGIN
SELECT MAX(NUMERO) FROM SERORDEM
INTO :CODNOVO;
END
IF (:ARQUIVO = DAV) THEN
BEGIN
SELECT MAX(NUMERO) FROM CABDAV
INTO :CODNOVO;
END
END
Quero executar ela no Delphi para inserir o campo código automatico (no cadastro de cliente, estoque.....).
Se alguém puder me ajudar, desde já agradeço.
segue o código da procedure:
CREATE PROCEDURE NOVOCOD(
ARQUIVO VARCHAR(3))
RETURNS (
CODNOVO VARCHAR(10))
AS
BEGIN
IF (:ARQUIVO = CLI) THEN
BEGIN
SELECT MAX(CODIGO) FROM CLIENTE
INTO :CODNOVO;
END
IF (:ARQUIVO = FOR) THEN
BEGIN
SELECT MAX(CODIGO) FROM FORNECEDOR
INTO :CODNOVO;
END
IF (:ARQUIVO = EST) THEN
BEGIN
SELECT MAX(CODIGO) FROM ESTOQUE
INTO :CODNOVO;
END
IF (:ARQUIVO = NOT) THEN
BEGIN
SELECT MAX(NOTA) FROM VENDAS
INTO :CODNOVO;
END
IF (:ARQUIVO = TRA) THEN
BEGIN
SELECT MAX(CODIGO) FROM TRANSPORTE
INTO :CODNOVO;
END
IF (:ARQUIVO = ICM) THEN
BEGIN
SELECT MAX(CODIGO) FROM TRIICMS
INTO :CODNOVO;
END
IF (:ARQUIVO = PEC) THEN
BEGIN
SELECT MAX(NUMERO) FROM PEDCOMPRA
INTO :CODNOVO;
END
IF (:ARQUIVO = PEV) THEN
BEGIN
SELECT MAX(NUMERO) FROM PEDVENDA
INTO :CODNOVO;
END
IF (:ARQUIVO = ORC) THEN
BEGIN
SELECT MAX(NUMERO) FROM ORCAMENTO
INTO :CODNOVO;
END
IF (:ARQUIVO = CON) THEN
BEGIN
SELECT MAX(CODIGO) FROM CONVENIO
INTO :CODNOVO;
END
IF (:ARQUIVO = SER) THEN
BEGIN
SELECT MAX(NUMERO) FROM SERORDEM
INTO :CODNOVO;
END
IF (:ARQUIVO = DAV) THEN
BEGIN
SELECT MAX(NUMERO) FROM CABDAV
INTO :CODNOVO;
END
END
Quero executar ela no Delphi para inserir o campo código automatico (no cadastro de cliente, estoque.....).
Se alguém puder me ajudar, desde já agradeço.
Willian Pavan
Curtidas 0
Respostas
Paulo Freire
28/06/2012
DM.SP_Baixa.ParamByName(NOVOCOD).AsInteger := wCod; // ou StrToInt(txtCodigo.Text);
DM.SP_Baixa.Execproc;
GOSTEI 0
Willian Pavan
28/06/2012
Ocrigado Paulo, só que esta dando um erro, é que meu campo CODIGO é varchar, no caso String
então ele me apresenta o seguinte erro ao compilar:
Incompatible types: integer and TIBStringField
oque devo fazer?
então ele me apresenta o seguinte erro ao compilar:
Incompatible types: integer and TIBStringField
oque devo fazer?
GOSTEI 0
Murilo Junqueira
28/06/2012
Olá, tente utilizar
DM.SP_Baixa.ParamByName(NOVOCOD).AsString
ou
DM.SP_Baixa.ParamByName(NOVOCOD).Value
Att.
DM.SP_Baixa.ParamByName(NOVOCOD).AsString
ou
DM.SP_Baixa.ParamByName(NOVOCOD).Value
Att.
GOSTEI 0