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

Lệnh odbc thích hợp để gọi thủ tục được lưu trữ trong Oracle với các tham số từ .Net là gì?

Tôi đang chạy .NET 3.5 và Oracle 10gR2. Tôi đã thêm một tham số đầu ra để phản hồi lại nhận xét của bạn.

Server , UidPwd đã được thay đổi để bảo vệ người vô tội. Đặt chúng thành các giá trị thích hợp.

Thủ tục đã lưu trữ của tôi:

create or replace
procedure test_proc(p1 in number, p2 in out varchar2) is
begin
  p2 := to_char(p1 + to_number(p2));
end;

Mã thử nghiệm của tôi:

using System;
using System.Data;
using System.Data.Odbc;

class OdbcTest
{
    const string connectionString =
        @"Driver={Microsoft ODBC for Oracle};" +
        @"Server=MyTnsName;" +
        @"Uid=MySchema;" +
        @"Pwd=MyPassword;";

    public static string TryMe()
    {
        using (var odbcConn = new OdbcConnection(connectionString))
        using (var odbcCommand = odbcConn.CreateCommand())
        {
            odbcCommand.CommandText = "{ CALL test_proc(?, ?) }";
            odbcCommand.CommandType = CommandType.StoredProcedure;

            odbcCommand.Parameters.Add("p1", OdbcType.Decimal).Value = 42;
            var p2 = odbcCommand.Parameters.Add("p2", OdbcType.VarChar, 30);
            p2.Direction = ParameterDirection.InputOutput;
            p2.Value = "25";

            odbcConn.Open();
            odbcCommand.ExecuteNonQuery();

            return p2.Value as string; // returns 67
        }
    }
}

Khi sử dụng OUT hoặc IN OUT tham số, Size thuộc tính của OdbcParameter phải được đặt thành một giá trị thích hợp.

Để trả lời nhận xét của bạn về việc xử lý ngoại lệ, tôi sẽ yêu cầu trình gọi của phương thức truy cập dữ liệu xử lý các ngoại lệ. Với using cấu trúc, Dispose phương thức sẽ được gọi tự động trên các đối tượng lệnh và kết nối cho dù có ngoại lệ hay không.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ý nghĩa của ký hiệu '@' trong Oracle SQL là gì?

  2. cách lấy dữ liệu một cột từ một bảng sang một bảng khác dưới dạng các cột khác nhau trong PL / SQL

  3. Tạo chèn sql vào cho Oracle

  4. Tiếp tục nhận được ORA-00933:Lệnh SQL không được kết thúc đúng cách

  5. Chuyển đổi một chuỗi ngày thành datetime trong Oracle