Estoy usando una herramienta de análisis de datos y el requisito que tengo es aceptar un valor del usuario, pasarlo como un parámetro y almacenarlo en una tabla. Bastante directo conducir así que me senté a escribir este¿Solución para "no se puede realizar una operación DML dentro de una consulta"?
create or replace
procedure complex(datainput in VARCHAR2)
is
begin
insert into dumtab values (datainput);
end complex;
ejecuté esto en SQL Developer mediante la siguiente instrucción
begin
complex('SomeValue');
end;
Trabajó muy bien, y se insertó el valor en la tabla. Sin embargo, las declaraciones anteriores no son compatibles con la herramienta de análisis de datos, por lo que recurrí al uso de una función. El siguiente es el código de la función, compila.
create or replace
function supercomplex(datainput in VARCHAR2)
return varchar2
is
begin
insert into dumtab values (datainput);
return 'done';
end supercomplex;
Una vez más trató de ejecutarlo en SQL Developer, pero tengo no puede realizar una operación DML dentro de una consulta al ejecutar el siguiente código
select supercomplex('somevalue') from dual;
Mi pregunta es - I necesita una declaración que puede ejecutar la función mencionada en SQL Developer o - Una función que puede realizar lo que estoy buscando y que puede ser ejecutado por el declaración. - Si no es posible hacer lo que estoy pidiendo, me gustaría un motivo para informarle a mi gerente, ya que soy muy nuevo (¿como una semana?) De PL/SQL, así que no estoy al tanto de las reglas y sintaxis
P.S. Cómo me gustaría que esto era C++ o incluso Java :(
EDITAR
necesito para ejecutar la función de SQL Developer porque antes de ejecutarlo en DMine (que es la herramienta) con el fin de comprobar si se trata de Cualquier cosa válida o no. válida en SQL también es válida en DMine, pero no al revés.
Gracias por la ayuda, entendía la situación y por qué es ilegal/no recomendado
El error que está recibiendo no es específico de SQL Developer, es un error de Oracle y es bastante sencillo: no puede realizar modificaciones en la base de datos en una consulta. Presumiblemente esto se debe a los niveles de aislamiento, para mantener el cumplimiento de ACID; de lo contrario, ¡podrías modificar las tablas que consultaste al mismo tiempo y todo el Infierno se desataría! – Xophmeister
¿Puede explicar por qué necesita llamar a una función en SQL Developer? ¿Por que importa? – APC
no es compatible con la herramienta de análisis de datos? que herramienta? Si puede ejecutar SQL en esta herramienta, debería poder ejecutar un script (el bloque anónimo que muestra inicialmente). – tbone