簡體   English   中英

從.NET作為存儲過程調用Oracle函數

[英]Call Oracle Function From .NET As Stored Procedure

我編寫了一個簡單的Oracle函數,稱為Tests,它沒有返回字符串的參數。 當我嘗試從.NET應用程序調用它時,出現錯誤消息:

System.Data.OracleClient.OracleException:

ORA-06550:第1行第7列:““ PLS-00221:'TESTING2'不是過程或未定義”。

當我將其更改為執行“從double中選擇testing()”並將CommandType更改為Text時,它將起作用。 我想念什么?

Dim oracleConn As OracleConnection = CreateConnection(<connection info here>)

    Dim oracleCmd As New OracleCommand()
    oracleCmd.Connection = oracleConn
    'oracleCmd.CommandText = "SELECT TESTING2() FROM DUAL" 'this works
    oracleCmd.CommandText = "TESTING2"   'this does not work

    oracleCmd.CommandType = CommandType.StoredProcedure

    'oracleCmd.ExecuteReader()  'also tried this
    Dim tmpVar As String = oracleCmd.ExecuteScalar()

create or replace FUNCTION testing2
RETURN VARCHAR2
AS      
begin
  return 'hello';
end;

我不再使用Oracle,因此現在無法對其進行測試,但是您告訴我此示例是否有效

Dim oracleConn As OracleConnection = CreateConnection(<connection info here>)
Dim oracleCmd As New OracleCommand()
oracleCmd.Connection = oracleConn
oracleCmd.CommandText = "TESTING2"   
oracleCmd.CommandType = CommandType.StoredProcedure
Dim prm = new OracleParameter("returnvalue", OracleType.VarChar)
prm.Size = 1024
prm.Direction = ParameterDirection.ReturnValue
oracleCmd.Parameters.Add(prm)
oracleCmd.ExecuteNonQuery()

Console.WriteLine(prm.Value.ToString)

順便說一句,我想CreateConnection返回一個OPEN連接對嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM