Procedure SQL no Delphi

Delphi

28/06/2012

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.
Willian Pavan

Willian Pavan

Curtidas 0

Respostas

Paulo Freire

Paulo Freire

28/06/2012



DM.SP_Baixa.ParamByName(NOVOCOD).AsInteger := wCod; // ou StrToInt(txtCodigo.Text);
DM.SP_Baixa.Execproc;
GOSTEI 0
Willian Pavan

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?
GOSTEI 0
Murilo Junqueira

Murilo Junqueira

28/06/2012

Olá, tente utilizar
DM.SP_Baixa.ParamByName(NOVOCOD).AsString
ou
DM.SP_Baixa.ParamByName(NOVOCOD).Value

Att.
GOSTEI 0
POSTAR