Tôi đang cố gọi một khối PL/SQL với ADO và VBA, nhưng tôi không thể truyền đầu vào và/hoặc các biến kết buộc đầu ra (có thể là các tham số aka).Với ADO, làm cách nào để gọi khối Oracle PL/SQL và chỉ định biến kết buộc đầu vào/đầu ra (tham số?)
dim cn as ADODB.connection
' ... open connection ...
dim plsql as string
plsql = "declare"
plsql = plsql & " num_in number := ?;"
plsql = plsql & " num_out number; "
plsql = plsql & "begin"
plsql = plsql & " num_out := num_in * 5;"
plsql = plsql & " ? := num_out;"
plsql = plsql & "end;"
dim cm as ADODB.command
set cm = new ADODB.command
set cm.activeConnection = cn
cm.commandText = plsql
cm.commandType = adCmdText
cm.parameters.append cm.createParameter(, adDouble, adParamInput,, 5)
cm.parameters.append cm.createParameter(, adDouble, adParamOutput )
cm.execute ' FAILS HERE
msgBox(cm.parameters(2))
Đoạn trên không thành công ở dòng cm.execute
với một ORA-01.008: không phải tất cả các biến ràng buộc
Tôi đánh giá cao bất kỳ sự giúp đỡ hướng tới một giải pháp cho vấn đề của tôi.
Tôi không chắc rằng Oracle cho phép bạn xác định các biến bên trong khối PL/SQL ẩn danh như thế. Bạn đang cố làm gì vậy? –
Điều này rõ ràng là một phiên bản rút gọn của những gì tôi thực sự muốn đạt được. Điều thực sự là khởi tạo một kiểu đối tượng PL/SQL, để chuyển thể hiện đến một thủ tục, và sau đó để đánh giá một vài phương thức và bộ nhớ trên kiểu đối tượng sau đó. –
Câu hỏi rất hay ... những cách vô cùng kỳ lạ trong đó oracle và ado gặp xung đột là vô cùng nhiều ... –