Tôi đang cố gắng thực hiện thủ tục lưu sẵn Oracle (1 tham số đầu vào và 2 tham số) bằng C#.Lỗi khi thực hiện Quy trình lưu trữ Oracle bằng C#
Bảng của tôi chứa 3 cột; một cột số nguyên id
và 2 varchar2.
Đây là định nghĩa bảng:
CREATE TABLE TESTTABLE
(
ID INT Not Null,
FNAME VARCHAR2(200),
LNAME VARCHAR2(200),
Constraint PK Primary Key (ID)
);
này được thủ tục lưu trữ của tôi:
create or replace PROCEDURE TESTP
(
tempID IN TESTTABLE.ID%Type,
tempName Out TESTTABLE.NAME%TYPE,
tempLName out TESTTABLE.LNAME%TYPE
)
AS
BEGIN
select Name, LNAME
into tempName, tempLName
from TestTable
where ID = tempID;
END;
Đây là đoạn mã để thực hiện thủ tục này từ C#:
try
{
Int32 id = 1;
string FName = "", LName = "";
using (_ora.GetOracleConnection())
{
Oracle.DataAccess.Client.OracleCommand cmd = new Oracle.DataAccess.Client.OracleCommand("TESTP", _ora.GetOracleConnection());
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("tempId", Oracle.DataAccess.Client.OracleDbType.Int32,ParameterDirection.Input).Value = id;
cmd.Parameters.Add("tempName", Oracle.DataAccess.Client.OracleDbType.Varchar2,200,ParameterDirection.Output).Value = FName;
cmd.Parameters.Add("tempLName", Oracle.DataAccess.Client.OracleDbType.Varchar2,200,ParameterDirection.Output).Value = LName;
cmd.ExecuteNonQuery();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
Đây là ngoại lệ được tạo:
Oracle.DataAccess.Client.OracleException ORA-06.502: PL/SQL: số hoặc giá trị lỗi
ORA-06.512: tại "USMANDBA.TESTP", dòng 9
bất cứ ai có thể giúp tôi?
Bạn có thể đăng mã của '_ora.GetOracleConnection()'? –
chỉ là một phương thức để trả về đối tượng đang mở hoặc đang kết nối hiện tại. –
đây là cách kết nối được thiết lập: con = new OracleConnection(); con.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings ["MyConnection"]. ConnectionString.ToString(); con.Open(); và đây là phương thức công khai của OracleConnection GetOracleConnection() { trả lại this.con; } –