Solution “ne peut pas effectuer une opération DML à l'intérieur d'une requête”?

Je suis à l'aide d'un outil d'Analyse de Données et de l'exigence que j'ai était accepter une valeur de l'utilisateur, passez en paramètre et de le stocker dans un tableau. Pas très compliqué donc je me suis assis pour écrire ce

create or replace
procedure complex(datainput in VARCHAR2)
is
begin
insert into dumtab values (datainput);
end complex;

J'ai exécuté cette SQL Developer à l'aide de l'instruction suivante

begin
complex('SomeValue');  
end;

Il a bien fonctionné, et la valeur a été inséré dans la table. Cependant, les déclarations ci-dessus ne sont pas pris en charge dans l'outil d'Analyse de Données, donc j'ai eu recours à l'utilisation d'une fonction à la place. Voici le code de la fonction, il compile.

create or replace
function supercomplex(datainput in VARCHAR2)
return varchar2
is
begin
insert into dumtab values (datainput);
return 'done';
end supercomplex;   

Une fois de plus, j'ai essayé de l'exécuter en SQL Developer, mais j'ai eu ne peut pas effectuer une opération DML à l'intérieur d'une requête lors de l'exécution le code suivant

select supercomplex('somevalue') from dual;

Ma question est
- J'ai besoin d'une déclaration qui peut exécuter le mentionné fonction dans SQL Developer ou
- Une fonction qui permet de réaliser ce que je suis à la recherche de ce qui peut être exécuté par l'instruction select.
- Si il n'est pas possible de faire ce que je demande, je voudrais une raison afin que je puisse informer mon manager que je suis très nouveau (comme une semaine?) PL/SQL donc je ne suis pas au courant des règles et de syntaxes.

P. S. Comment je souhaite que ce était le C++ ou même Java 🙁

MODIFIER

J'ai besoin pour exécuter la fonction SQL Developer, car avant de l'exécuter dans DMine (qui est l'outil) afin de tester si elle est valide ou pas. Rien non valide dans SQL est également valide dans DMine, mais pas l'inverse.

Merci pour l'aide, j'ai compris la situation et pourquoi il est illégal de ne pas recommandé

  • L'erreur que vous obtenez n'est pas SQL Developer spécifique, c'est une erreur Oracle et c'est assez simple: Vous ne pouvez pas apporter des modifications à la base de données dans une requête. Sans doute cela est dû à des niveaux d'isolement, de maintenir l'ACIDE de la conformité; sinon, vous pourriez vous modifier des tableaux vous ont été interrogeant en même temps et tout l'Enfer allait barder!
  • Pouvez-vous expliquer pourquoi vous avez besoin d'appeler une fonction en SQL Developer? Pourquoi cette question?
  • pas pris en charge dans l'outil d'analyse de données? quel outil? si vous pouvez l'exécuter SQL dans cet outil, vous devriez être en mesure d'exécuter un script (le bloc anonyme vous montrer d'abord).
InformationsquelleAutor Joshua1729 | 2012-01-04