Stored Procedure-firebird
Caros amigos,
Gostaria de criar uma Stored Procedure q faça o seguinte:
1-update
2-um select
3-outro update
4-retorne o select
gostaria de saber se isso eh possivel
o codigo q usei foi esse:
create procedure p_update_x
returns (d2_p char(60))
as
declare variable d1 char(60);
declare variable d2 char(60);
declare variable d3 char(60);
begin
d1 = ´x´;
update tb_saida set c_flag=:d1 where c_flag=´n´;
select c_variavel from tb_saida where c_flag = ´x´
into :d2;
d3 = ´e´;
update tb_saida set c_flag=:d3 where c_flag=´x´;
end;
porém nao funciona .
gostaria que alguem me desse uma mão.
obrigado.
Vinicius Matos
Gostaria de criar uma Stored Procedure q faça o seguinte:
1-update
2-um select
3-outro update
4-retorne o select
gostaria de saber se isso eh possivel
o codigo q usei foi esse:
create procedure p_update_x
returns (d2_p char(60))
as
declare variable d1 char(60);
declare variable d2 char(60);
declare variable d3 char(60);
begin
d1 = ´x´;
update tb_saida set c_flag=:d1 where c_flag=´n´;
select c_variavel from tb_saida where c_flag = ´x´
into :d2;
d3 = ´e´;
update tb_saida set c_flag=:d3 where c_flag=´x´;
end;
porém nao funciona .
gostaria que alguem me desse uma mão.
obrigado.
Vinicius Matos
Vinicius__matos
Curtidas 0
Respostas
Emerson Nascimento
24/05/2006
dá algum erro ou não altera os dados? o que exatamente você quer fazer? porque a variável de retorno?
GOSTEI 0
Vinicius__matos
24/05/2006
Bom na hora q eu vou criar a procedure nao da erro algum.
porem na hora q vou executar o erro é o seguinte:
multiple rows in singleton select.
ja o variavel de retorno é necessaria pois vou mandar os dados desse select para um outro programa.
obrigado.
porem na hora q vou executar o erro é o seguinte:
multiple rows in singleton select.
ja o variavel de retorno é necessaria pois vou mandar os dados desse select para um outro programa.
obrigado.
GOSTEI 0
Vinicius__matos
24/05/2006
ok. vou temtar ser + claro...
tenho uma tabela chamada
tb_saida com o campo c_variavel char e um campo c_flag char(1) (obs só com n de conteudo.)
o q eu quero é uma stored procedure q mude o c_flag para x de um select q peguando todos os c_flag = x e depois mude o x para e.
e como retorno o select.
obrigado pela sua atenção.
Vinicius Matos
tenho uma tabela chamada
tb_saida com o campo c_variavel char e um campo c_flag char(1) (obs só com n de conteudo.)
o q eu quero é uma stored procedure q mude o c_flag para x de um select q peguando todos os c_flag = x e depois mude o x para e.
e como retorno o select.
obrigado pela sua atenção.
Vinicius Matos
GOSTEI 0
Joaoshi
24/05/2006
Colega você precisa utilizar o FOR SELECT
Espero ter ajudado.
Espero ter ajudado.
GOSTEI 0
Emerson Nascimento
24/05/2006
dá o erro em tempo de execução porque você executa uma instrução que retorna mais de um registro e tenta jogar isso num campo. pra fazer dessa forma, você precisa de um cursor. faça isso com FOR. tente assim:
create procedure p_update_x returns (d2 char(60)) as declare variable d1 char(60); begin d1 = ´x´; update tb_saida set c_flag=:d1 where c_flag=´n´; for select c_variavel from tb_saida where c_flag = ´x´ into :d2 do suspend; d1 = ´e´; update tb_saida set c_flag=:d1 where c_flag=´x´; end;
GOSTEI 0