2011-01-18 30 views
5

Tôi có một quy trình hợp lệ và có trong đó một câu lệnh insert..select. Bây giờ có một trường hợp khi thực hiện thủ tục này tạo ra lỗi "ORA-00904:: invalid identifier" từ câu lệnh này. Làm thế nào mà thậm chí về mặt lý thuyết có thể? Không có trình kích hoạt hoặc SQL động.Làm cách nào để nhận được "ORA-00904:: số nhận dạng không hợp lệ" từ gói hợp lệ?

Ngoài ra, văn bản ORA-00904 trong sqlerrm không có con trỏ tới bất kỳ số nhận dạng cụ thể nào mà Oracle coi là không hợp lệ.

Oracle phiên bản 9.2.0.8

edit2:

Hóa ra là có một vấn đề với một hàm được gọi từ bên trong mà chọn (thay thế nó bằng hằng số và tất cả mọi thứ đã làm việc). Có lẽ đó là lý do mà ORA-00904 không đưa ra một định danh. Tuy nhiên, câu hỏi vẫn còn - làm thế nào có thể đó là mã biên dịch trước không có sql động cho lỗi này?

+5

Bạn có thể đăng một số mã mẫu không! – Tim

+2

Có bất kỳ chế độ xem nào không? Từ những gì bạn đã nói tôi đoán bạn đã có một trình xử lý ngoại lệ cho tất cả các lỗi ('khi người khác') in' SQLERRM'; nếu bạn không có thì ngoại lệ sẽ được nêu ra và sẽ cung cấp thêm thông tin về vị trí của nó. –

+5

Chức năng mà bạn đã xác định và bất kỳ thứ gì được gọi lần lượt, cũng không có SQL động? Có bất cứ điều gì trong chuỗi có một mệnh đề 'authid current_user', điều này có thể ảnh hưởng đến hành vi giữa biên dịch và thời gian chạy (đặc quyền và độ phân giải) không? Bạn có dựa vào bất kỳ privs được cấp vai trò nào không áp dụng trong các gói không? –

Trả lời

2

Tôi nghĩ loại lỗi này có thể xảy ra khi bạn truy cập gói có gói hợp lệ nhưng cơ thể cần biên dịch và ném ngoại lệ.

Lý do khác có thể là mã với current_user authid nó chạy với các đặc quyền của người dùng hiện tại (không bình thường với các đặc quyền của người dùng đang sở hữu). Một thủ tục như vậy có thể thất bại khi được gọi với một và thành công khi được thực hiện với người dùng khác.

0

Vì bạn đã tìm thấy giải pháp, đây không phải là vấn đề của bạn. Nhưng tôi muốn thêm một lưu ý, rằng bạn nhận được lỗi này nếu các gói chức năng có một cơ thể, nhưng không có chữ ký chức năng trong tờ Spec.

Các vấn đề liên quan