Tôi đang sử dụng công cụ Phân tích dữ liệu và yêu cầu tôi có là chấp nhận giá trị từ người dùng, chuyển giá trị đó dưới dạng tham số và lưu trữ nó trong bảng. Khá straighforward vì vậy tôi ngồi viết nàyGiải pháp cho "không thể thực hiện thao tác DML bên trong truy vấn"?
create or replace
procedure complex(datainput in VARCHAR2)
is
begin
insert into dumtab values (datainput);
end complex;
tôi thực hiện điều này trong SQL Developer sử dụng câu lệnh sau
begin
complex('SomeValue');
end;
Nó hoạt động tốt, và giá trị được chèn vào bảng. Tuy nhiên, các câu lệnh trên không được hỗ trợ trong công cụ Phân tích Dữ liệu, vì vậy tôi đã sử dụng hàm để thay thế. Sau đây là mã của hàm, nó biên dịch.
create or replace
function supercomplex(datainput in VARCHAR2)
return varchar2
is
begin
insert into dumtab values (datainput);
return 'done';
end supercomplex;
Một lần nữa tôi cố gắng thực hiện nó trong SQL Developer, nhưng tôi đã nhận không thể thực hiện một hoạt động DML bên trong một truy vấn khi thực hiện đoạn mã sau
select supercomplex('somevalue') from dual;
Câu hỏi của tôi là - Tôi cần một câu lệnh có thể chạy hàm được đề cập trong Nhà phát triển SQL hoặc - Một hàm có thể thực hiện những gì tôi đang tìm kiếm có thể được thực hiện bằng cách chọn tuyên bố. - Nếu không thể làm những gì tôi hỏi, tôi muốn một lý do để tôi có thể thông báo cho người quản lý của mình vì tôi rất mới (như một tuần tuổi?) Với PL/SQL vì vậy tôi không biết các quy tắc và cú pháp.
P.S. Làm thế nào tôi muốn này là C++ hoặc thậm chí Java :(
EDIT
tôi cần để chạy các chức năng trên SQL Developer vì trước khi chạy nó trong DMine (đó là công cụ) để kiểm tra nếu nó là Bất cứ điều gì có giá trị hay không. không hợp lệ trong SQL cũng là không hợp lệ trong DMine, nhưng không phải là cách khác xung quanh.
Thanks for the help, tôi hiểu tình hình và giải thích tại sao nó là bất hợp pháp/không được khuyến khích
Lỗi bạn đang nhận không phải là SQL Developer cụ thể, nó là một lỗi Oracle và nó khá đơn giản: Bạn không thể sửa đổi cơ sở dữ liệu trong truy vấn. Có lẽ điều này là do mức độ cách ly, để duy trì sự tuân thủ ACID; bằng không bạn có thể sửa đổi các bảng bạn đang truy vấn cùng một lúc và tất cả Địa ngục sẽ tan vỡ! – Xophmeister
Bạn có thể giải thích tại sao bạn cần gọi một hàm trong SQL Developer không? Tại sao lại là vấn đề đó? – APC
không được hỗ trợ trong công cụ phân tích dữ liệu? công cụ gì nếu bạn có thể chạy SQL trong công cụ này, bạn sẽ có thể chạy một kịch bản (khối ẩn danh bạn hiển thị ban đầu). – tbone