Tôi muốn tạo bảng tạm thời trong thủ tục lưu trữ và truy cập nó trong cùng nhưng tôi đã nhận lỗi rằng ORA-00942:Table or view does not exists.
Tiếp theo là thủ tục mà tôi đã cố gắng,Làm thế nào để tạo và sử dụng bảng tạm thời trong thủ tục lưu trữ oracle?
Create procedure myproc
IS
stmt varchar2(1000);
BEGIN
stmt:='CREATE GLOBAL TEMPORARY table temp(list if columns) ON COMMIT DELETE ROWS';
execute immediate stmt;
insert into temp values('list of column values');
END;
Đây là cách tôi đã sử dụng để tạo ra bảng tạm thời nhưng Tôi gặp lỗi, có cách nào khác để thực hiện tác vụ này không?
@ câu trả lời của tbone cho thấy bạn nên làm gì, nhưng để giải thích những gì bạn thấy: Bạn không thể làm điều này bởi vì tại thời điểm quy trình được biên soạn 'temp' chưa tồn tại. Trình biên dịch không cố gắng phân tích cú pháp SQL động, ít nhất là vì nó không có ý tưởng nếu nó sẽ hoạt động trong thời gian chạy. Cách duy nhất cách tiếp cận này sẽ làm việc là nếu chèn cũng được biến thành SQL động; nhưng đây không phải là cách các bảng tạm thời hoạt động trong Oracle, do đó, đừng làm như thế này. –
@Alex Poole: Cảm ơn –
bản sao có thể có của [Bảng tạm thời cục bộ trong Oracle 10 (đối với phạm vi thủ tục được lưu trữ)] (http://stackoverflow.com/questions/1192265/local-temporary-table-in-oracle-10 -for-the-scope-of-lưu trữ-thủ tục) – APC