instruccion sql

leoguer
03 de Octubre del 2005
Buenos dias

Lo que sucede es que tengo un programa que ejecuta automaticamente unos scripts, pero necesio realizar unas validaciones dentro de estos para que se ejecuten o no partes de las sentencias y no se como??? por ejemplo:

insert into ec_entid select * from tmp_ec_entid
drop table tmp_ec_entid

antes de borrar la tabla necesito berificar que efectivamente los registros fueron copiados, sino no debe ejecutar el borrado.

Tengo ejemplos sobre la funcion CASE, pero me doy cuenta que operan sobre select realizados a una tabla.

Agradezco su ayuda.

Jor-El
03 de Octubre del 2005
Así como lo planteas no se puede.

Pero de esta manera si ( Es un ejemplo, seguro que hay mas formas ) :

DECLARE

CONTADOR NUMBER;

BEGIN

SELECT COUNT(*)
INTO CONTADOR
FROM tmp_ec_entid;
insert into ec_entid select * from tmp_ec_entid;
IF SQL%ROWCOUNT = CONTADOR THEN

EXECUTE INMEDIATE ('drop table tmp_ec_entid');
COMMIT;
ELSE
ROLLBACK;
END IF;
end;
Suerte ¡ ¡

leoguer
03 de Octubre del 2005
Gracias por su ayuda,

Cuando ejecuto la instruccion me sale un mensaje de error que dice que la tabla temporal no existe, por lo que falla el insert, parece que no ejecuta el create table.....

Estoy creando un script que se ejecute aparte donde se cree la temporal para que cuando se ejecute este no salga el erro, pero sera que se puede hacer todo en un solo script???. La sentencia que ejecute esta a continuacion:

DECLARE CONTADOR NUMBER(5);
BEGIN
SELECT COUNT(*)
INTO CONTADOR
FROM PRUE;
EXECUTE IMMEDIATE ('CREATE TABLE TMP_PRUE (CO VARCHAR2(5))');
COMMIT;
insert into TMP_PRUE select * from PRUE;
IF SQL%ROWCOUNT = CONTADOR THEN
EXECUTE IMMEDIATE ('CREATE TABLE PRUE1 (CO VARCHAR2(5))');
COMMIT;
ELSE
ROLLBACK;
END IF;
end;