Solo para expertos(eso creo)
Hola a todos, no tengo mucho tiempo de interactuar con oracle, pero actualmente estoy desarrollando una aplicación que tiene que interactuar con una base de datos orale, y tengo el siguiente problema:
Mi aplicación está desarrollada en delphi, en delphi hago una seria de consultas de las cuales como resultado obtengo una cadena en donde tengo o se supone que hay un conjunto de claves, las cuales cumplen ciertas condiciones, por ejemplo: 'clave1,clave2,...clave2',
ok, ahora necesito pasar esa cadena a un procedure que he realizado en oracle, en el cual utilizo el operador in, por lo cual, como es lógio necesito que la cadena sea convetida a conjunto, yo pensé que simplemente enviaba la cadena y ya, pero me marca error, porque oracle pone comillas a la cadena, a continuación ilustro el problema:
select * from tabla where clave in (claves)
deberia ser:
select * from tabla where clave in (clave1,clave2,....claven)
pero oracle me pone:
select * from tabla where clave in ('clave1,clave2,....claven'); por lo cual nunca obtengo nada en dicha consulta
si alguien sabe como le hago, please, le agreceré el tip's
bye
Mi aplicación está desarrollada en delphi, en delphi hago una seria de consultas de las cuales como resultado obtengo una cadena en donde tengo o se supone que hay un conjunto de claves, las cuales cumplen ciertas condiciones, por ejemplo: 'clave1,clave2,...clave2',
ok, ahora necesito pasar esa cadena a un procedure que he realizado en oracle, en el cual utilizo el operador in, por lo cual, como es lógio necesito que la cadena sea convetida a conjunto, yo pensé que simplemente enviaba la cadena y ya, pero me marca error, porque oracle pone comillas a la cadena, a continuación ilustro el problema:
select * from tabla where clave in (claves)
deberia ser:
select * from tabla where clave in (clave1,clave2,....claven)
pero oracle me pone:
select * from tabla where clave in ('clave1,clave2,....claven'); por lo cual nunca obtengo nada en dicha consulta
si alguien sabe como le hago, please, le agreceré el tip's
bye
Hola:
No te entendi mucho pero ojala que te ayude en algo este codigo :).
-- Tabla que contendra las claves
create table P1(
clave1 integer,
clave2 integer,
clave3 integer
);
-- Tabla donde almacenaremos los valores seleccionados
create table p2(
valor1 integer,
valor2 integer,
valor3 integer
);
insert into p1 values ('1','1','1');
insert into p1 values ('2','2','1');
insert into p1 values ('3','1','2');
insert into p1 values ('4','2','1');
insert into p1 values ('5','1','6');
insert into p1 values ('6','3','5');
insert into p1 values ('7','1','4');
commit;
--Procedimiento que inserta los datos en la tabla p2, dependiendo de
-- cl1, cl2, cl3 ( clave1, clave2, clave2)
create or replace procedure Procedimiento(cl1 integer, cl2 integer, cl3 integer) is
begin
insert into p2
select * from p1 where clave1 in (cl1,cl2,cl3);
end Procedimiento;
Nota: en procedimiento y en funciones cuando tu haces un solo select lo mas probable es que te salga un error debido a que se espera que tu uses la clausula INTO para asignar a una variable.
No te entendi mucho pero ojala que te ayude en algo este codigo :).
-- Tabla que contendra las claves
create table P1(
clave1 integer,
clave2 integer,
clave3 integer
);
-- Tabla donde almacenaremos los valores seleccionados
create table p2(
valor1 integer,
valor2 integer,
valor3 integer
);
insert into p1 values ('1','1','1');
insert into p1 values ('2','2','1');
insert into p1 values ('3','1','2');
insert into p1 values ('4','2','1');
insert into p1 values ('5','1','6');
insert into p1 values ('6','3','5');
insert into p1 values ('7','1','4');
commit;
--Procedimiento que inserta los datos en la tabla p2, dependiendo de
-- cl1, cl2, cl3 ( clave1, clave2, clave2)
create or replace procedure Procedimiento(cl1 integer, cl2 integer, cl3 integer) is
begin
insert into p2
select * from p1 where clave1 in (cl1,cl2,cl3);
end Procedimiento;
Nota: en procedimiento y en funciones cuando tu haces un solo select lo mas probable es que te salga un error debido a que se espera que tu uses la clausula INTO para asignar a una variable.
