Fórum delphi sotredprocedure (não funciona) #274455
29/03/2005
0
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
Curtir tópico
+ 0Posts
29/03/2005
Kotho
Gostei + 0
29/03/2005
Uiliangurjon
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
Gostei + 0
29/03/2005
Uiliangurjon
Gostei + 0
29/03/2005
Faelcavalcanti
Gostei + 0
29/03/2005
Faelcavalcanti
:wink:
Falow!
Gostei + 0
29/03/2005
Uiliangurjon
mensagem de erro:
SQLQuery1: parameter ´I_TIPO´ not found
Gostei + 0
29/03/2005
Faelcavalcanti
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!
Gostei + 0
29/03/2005
Faelcavalcanti
Gostei + 0
30/03/2005
Uiliangurjon
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!!!!
Gostei + 0
30/03/2005
Faelcavalcanti
Gostei + 0
31/03/2005
Uiliangurjon
tanto a de pesquisa quanto a de manutenção!!!!!!
Valeu pela atenção!!!!!!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)