GARANTIR DESCONTO

Fórum delphi sotredprocedure (não funciona) #274455

29/03/2005

0

SQLQuery1.Close;
SQLQuery1.SQL.Text := ´SELECT * FROM MANUTENCAO_PESQ_DE_EMPRESA (:I_TIPO)´;
SQLQuery1.ParamByName(´I_TIPO´).AsString := ´P´;
SQLQuery1.Open;


Criei essa storedprocedure MANUTENCAO_PESQ_DE_EMPRESA com o parametro i_tipo sempre que tento executar a rotina da um erro o que pode estar errado

uso deexpress


Uiliangurjon

Uiliangurjon

Responder

Posts

29/03/2005

Kotho

Amigo... posta a procedure....


Responder

Gostei + 0

29/03/2005

Uiliangurjon

CREATE PROCEDURE MANUTENCAO_PESQ_DE_EMPRESA (
I_TIPO VARCHAR(1),
I_ORDEM VARCHAR(20),
I_COD VARCHAR(40),
I_RAZAO VARCHAR(40),
I_NOME_F VARCHAR(40),
I_ENDE VARCHAR(40),
I_BAIRRO VARCHAR(40),
I_CIDADE VARCHAR(40),
I_ESTADO VARCHAR(2),
I_CEP VARCHAR(9),
I_TEL1 VARCHAR(18),
I_TEL2 VARCHAR(18),
I_TEL3 VARCHAR(18),
I_CNPJ VARCHAR(18),
I_INSC VARCHAR(18),
I_MAIL VARCHAR(100),
I_HOME VARCHAR(100),
I_PATH VARCHAR(100))
RETURNS (
R_CODIGO INTEGER,
R_RAZAO VARCHAR(40),
R_NF VARCHAR(40),
R_TEL VARCHAR(18))
AS
begin
IF (:I_tipo = ´I´) then
BEGIN
INSERT INTO EMPRESAS(
EMPRESAS.razao_social,
EMPRESAS.nome_fantasia,
EMPRESAS.endereco,
EMPRESAS.bairro,
EMPRESAS.cidade,
EMPRESAS.estado,
EMPRESAS.cep,
EMPRESAS.telefone1,
EMPRESAS.telefone2,
EMPRESAS.telefone3,
EMPRESAS.cnpj,
EMPRESAS.insc_est,
EMPRESAS.e_mail,
EMPRESAS.home_page,
EMPRESAS.path_imagem)
VALUES(
:I_razao,
:I_nome_f,
:I_ende,
:I_bairro,
:I_cidade,
:I_estado,
:I_cep,
:I_tel1,
:I_tel2,
:I_tel3,
:I_cnpj,
:I_insc,
:I_mail,
:I_home,
:I_path);
END

IF (:i_tipo = ´A´) then
BEGIN
UPDATE EMPRESAS SET EMPRESAS.razao_social = :i_razao,
EMPRESAS.nome_fantasia = :i_nome_f,
EMPRESAS.endereco = :i_ende,
EMPRESAS.bairro = :i_bairro,
EMPRESAS.cidade = :i_cidade,
EMPRESAS.estado = :i_estado,
EMPRESAS.cep = :i_cep,
EMPRESAS.telefone1 = :i_tel1,
EMPRESAS.telefone2 = :i_tel2,
EMPRESAS.telefone3 = :i_tel3,
EMPRESAS.cnpj = :i_cnpj,
EMPRESAS.insc_est = :i_insc,
EMPRESAS.e_mail = :i_mail,
EMPRESAS.home_page = :i_home,
EMPRESAS.path_imagem = :i_path

WHERE EMPRESAS.CODIGO = :i_COD;
END

IF (:i_tipo = ´D´) then
BEGIN
DELETE FROM EMPRESAS WHERE EMPRESAS.codigo = :i_COD;
END

IF (:I_tipo = ´P´) THEN
BEGIN /* PESQUISANDO POR CODIGO */
IF (:I_ORDEM = ´0´) THEN
BEGIN
for SELECT EMPRESAS.codigo,
EMPRESAS.razao_social,
EMPRESAS.nome_fantasia,
EMPRESAS.telefone1
FROM EMPRESAS
WHERE EMPRESAS.codigo like :I_cod || ´¬´
INTO :r_codigo,
:r_razao,
:r_nf,
:r_tel
do
suspend;
END
END

BEGIN
IF (:I_ORDEM = ´1´) THEN
BEGIN /* PESQUISANDO POR RAZAO SOCIAL */
for SELECT EMPRESAS.codigo,
EMPRESAS.razao_social,
EMPRESAS.nome_fantasia,
EMPRESAS.telefone1
FROM EMPRESAS
WHERE EMPRESAS.razao_social like :I_cod || ´¬´
INTO :r_codigo,
:r_razao,
:r_nf,
:r_tel
do
suspend;
END
END

BEGIN
IF (:I_ORDEM = ´2´) THEN
BEGIN /* PESQUISANDO POR NOME FANTASIA */
for SELECT EMPRESAS.codigo,
EMPRESAS.razao_social,
EMPRESAS.nome_fantasia,
EMPRESAS.telefone1
FROM EMPRESAS
WHERE EMPRESAS.nome_fantasia like :I_cod || ´¬´
INTO :r_codigo,
:r_razao,
:r_nf,
:r_tel
do
suspend;
END
END
end

Esta procedure funciona 100¬ eu testei no ibexpert


Responder

Gostei + 0

29/03/2005

Uiliangurjon

desenvolvo com clx!!!!


Responder

Gostei + 0

29/03/2005

Faelcavalcanti

Qual a mensagem de erro que está dando no delphi ???? Pelo que eu tê vendo têm nada de errado. Qual componente estais utilizando, especificamente para a execução desta [b:dce2faf42b]procedure[/b:dce2faf42b] ?


Responder

Gostei + 0

29/03/2005

Faelcavalcanti

Talves possa ser algum parâmetro que não estais passando na procedure, ou valor passado como referência para os parâmetros. Tenta depurar e ver o que está acontecendo.

:wink:
Falow!


Responder

Gostei + 0

29/03/2005

Uiliangurjon

uso os componentes da paleta dexpress (sqlquery)

mensagem de erro:

SQLQuery1: parameter ´I_TIPO´ not found


Responder

Gostei + 0

29/03/2005

Faelcavalcanti

uso os componentes da paleta dexpress (sqlquery) mensagem de erro: SQLQuery1: parameter ´I_TIPO´ not found


Cara. Se funcionou no IBExpert, deve ter algum problema a estar passando este parâmetro. Agora vê só estava olhando o teu código abaixo, tipow:

SQLQuery1.Close; 
SQLQuery1.SQL.Text := ´SELECT * FROM MANUTENCAO_PESQ_DE_EMPRESA (:I_TIPO)´; 
SQLQuery1.ParamByName(´I_TIPO´).AsString := ´P´; 
SQLQuery1.Open; 


Cara tais tentando fazer uma consulta SQL, e não tentar executar a procedure, por isso ele reclama do parâmetro. Utiliza o TSQLDataSet, ou um mais próprio para indicar qual a procedure e efetuar a execução já com todos os valores dos parâmetros já setados.

Espero ter ajudado!


Responder

Gostei + 0

29/03/2005

Faelcavalcanti

Agora fiquei indeciso, assim como no seu código funciona com o TSQLQuery, para execução de procedure. Se for não sabia. Puxa! :oops:


Responder

Gostei + 0

30/03/2005

Uiliangurjon

SQLQuery1.Close;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add(´select * from PESQ_DE_EMPRESA (:I_TIPO, :I_ORDEM, :I_COD)´);
SQLQuery1.ParamByName(´I_TIPO´).AsString := ´P´;
SQLQuery1.ParamByName(´I_ORDEM´).AsString := ´0´;
SQLQuery1.ParamByName(´I_COD´).AsString := ´1´;
SQLQuery1.Open;


Assim funcionou!!!!


Responder

Gostei + 0

30/03/2005

Faelcavalcanti

Fizesse outra procedure né, agora o que eu acho estranho é ele não reclamar dos outros parâmetros. :?


Responder

Gostei + 0

31/03/2005

Uiliangurjon

fiz uma nova procedure somente para pesquisar ai funcionou!!!!!!

tanto a de pesquisa quanto a de manutenção!!!!!!


Valeu pela atenção!!!!!!


Responder

Gostei + 0

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

Aceitar