0
我正在將Java應用程序轉換爲.NET應用程序,並且需要使用包函數進行接口。該功能以標準化的方式插入到多個表中,因此編寫單獨的查詢來實現我的目標不是一種選擇。Oracle包函數調用在.NET中失敗
從這裏和其他地方閱讀,我明白要訪問.NET中的函數,您將它視爲存儲過程。我相信我已經正確地編寫了ADO代碼,但是我收到了我應該得到的異常。
我的代碼:
Dim conn As OracleConnection = Database.DataConnection //A property that opens the connection on Get
Dim cmd As New OracleCommand()
cmd.Connection = conn
cmd.CommandText = "pkg_insert_stock.create_stock"
cmd.CommandType = CommandType.StoredProcedure
...//input values assigned here
'Return parameters
cmd.Parameters.Add("v_stock_id", OracleDbType.Varchar2, ParameterDirection.ReturnValue)
'Input parameters
cmd.Parameters.Add("p_cust_num", OracleDbType.Int32, custNum, ParameterDirection.Input)
cmd.Parameters.Add("p_group_code", OracleDbType.Varchar2, groupCode, ParameterDirection.Input)
cmd.Parameters.Add("p_searchkey1", OracleDbType.Varchar2, search1, ParameterDirection.Input)
cmd.Parameters.Add("p_searchkey2", OracleDbType.Varchar2, search2, ParameterDirection.Input)
cmd.Parameters.Add("p_searchkey3", OracleDbType.Varchar2, search3, ParameterDirection.Input)
cmd.Parameters.Add("p_unit_qty", OracleDbType.Int32, unitQty, ParameterDirection.Input)
cmd.Parameters.Add("p_price", OracleDbType.Int32, price, ParameterDirection.Input)
cmd.Parameters.Add("p_width", OracleDbType.Decimal, width, ParameterDirection.Input)
cmd.Parameters.Add("p_basis_weight", OracleDbType.Decimal, basisWeight, ParameterDirection.Input)
cmd.Parameters.Add("p_costingkind", OracleDbType.Int32, costingKind, ParameterDirection.Input)
cmd.Parameters.Add("p_quality", OracleDbType.Varchar2, quality, ParameterDirection.Input)
cmd.Parameters.Add("p_sales_desc", OracleDbType.Varchar2, salesDesc, ParameterDirection.Input)
cmd.Parameters.Add("p_purchase_desc", OracleDbType.Varchar2, purchaseDesc, ParameterDirection.Input)
'Execute the stored procedure
cmd.ExecuteNonQuery()
articleNum = CType(cmd.Parameters.Item("v_stock_id").Value, Integer)
conn.Close()
函數簽名:
PACKAGE pkg_insert_stock AS
function create_stock(p_cust_num in NUMBER, p_group_code in VARCHAR2, p_searchkey1 in VARCHAR2, p_searchkey2 in VARCHAR2, p_searchkey3 in VARCHAR2, p_unit_qty in NUMBER, p_price in NUMBER, p_width in NUMBER, p_basis_weight in NUMBER, p_costingkind in NUMBER, p_quality in VARCHAR2,p_sales_desc in VARCHAR2, p_purchase_desc in VARCHAR2) return VARCHAR2;
END pkg_insert_stock;
我的問題(目前)是我收到ORA-01403:沒有這條線的功能找到的數據:
select round(((sysdate - to_date('01-JAN-1970','DD-MON-YYYY')) * (86400)),0) into v_timestamp from dual;
這對我沒有任何意義。系統日期不是可以回來的「沒有數據發現」,除非我誤解了如何工作。而且,這個函數在我們的基於Java的生產服務器上工作得很好,就像。
我已經能夠找到有關訪問函數和存儲過程的所有信息都告訴我我已經正確設置了這個設置,但顯然情況並非如此。我已驗證所有輸入變量在運行時都有值,所以我現在處於虧損狀態。