2016-07-06 5 views
0

参照カーソルを返すOracle関数を実行しようとしていますが、何も機能していません。私はいくつかのstackoverflow投稿によって提案されるいくつかのソリューションを試しました。以下は、私が試したものです:C#を使用してOracle関数を実行

機能

FUNCTION market.get_countries_list RETURN REF CURSOR 
(
    COUNTRY_CODE NUMBER(3), 
    COUNTRY_NAME VARCHAR2(50) 
); 

C#コード:私は行方不明です何

ORA-01036: illegal variable name/number 

System.Data.OracleClient.OracleConnection conn = new System.Data.OracleClient.OracleConnection(); 
conn.ConnectionString = "..."; 
conn.Open(); 
System.Data.OracleClient.OracleCommand cmd = new System.Data.OracleClient.OracleCommand("MARKET.GET_COUNTRIES_LIST", conn); 
cmd.CommandType = System.Data.CommandType.Text; 
cmd.Parameters.Add(new System.Data.OracleClient.OracleParameter("ref_cur", System.Data.OracleClient.OracleType.Cursor)).Direction = System.Data.ParameterDirection.Output; 
System.Data.OracleClient.OracleDataReader rdr = cmd.ExecuteReader(); 
while (rdr.Read()) { 
    Label1.Text = rdr.GetOracleNumber(0).ToString(); 
    rdr.Close(); 
} 

上記のコードは以下のエラーを生成しますか?

+1

を使用して終了しますが、Oracleのビルトインの.NET Frameworkデータプロバイダを使用しているように見えます。私はこれが推奨されないと信じています。代わりにODP.NETライブラリーを使用してください。それはGoogleと、あなたはそれを見つけるでしょう。 – sstan

+1

オラクルの.NETデータプロバイダは、現在「32ビット」を使用しています。なぜなら、「64ビットdll」には既知のバグがあるからです。 – MethodMan

+0

ここでは 'SYS_REFCURSOR'を返す関数の作成方法例です。http://stackoverflow.com/questions/2153053/how-to-return-a-resultset-cursor-from-a-oracle-pl-sql-anonymous-block-that-exe – MethodMan

答えて

関連する問題