Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Trả về sys_refcursor của tiên tri cho c #

Có lý do gì khiến bạn không sử dụng một hàm thay vì thủ tục không?

CREATE OR REPLACE FUNCTION ListadoClientes() RETURN sys_refcursor
IS 
resul Sys_refcursor;
BEGIN 
  OPEN resul for select ID ,NOMBRES ,APELLIDOS ,CEDULA ,DIRECCION ,TELEFONO  
  from cliente; 
  RETURN resul;
END ListadoClientes;

Sau đó, trong C #, bạn phải thay đổi nó thành thế này:

cmd.Parameters.Add("resul", OracleDbType.RefCursor, ParameterDirection.ReturnValue);

Khi bạn chạy da.Fill(ds); thì hàm được thực thi, tức là sử dụng cmd.ExecuteNonQuery(); thực thi chức năng hai lần.

Dù sao, đối với một thủ tục, cách phù hợp phải là cách sau:

cmd.CommandText = "ListadoClientes(:resul)";


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLException:Vi phạm giao thức trong oracle

  2. Oracle SQL so sánh DATEs trả về kết quả sai

  3. Tham số Boolean cho thủ tục lưu trữ Oracle

  4. Java:Đọc Blob từ Oracle

  5. ORA-04021:xảy ra thời gian chờ trong khi chờ khóa đối tượng