C# Oracle Function 呼び出せない
Q&A
Closed
解決したいこと
ここに解決したい内容を記載してください。
C# Oracle Function 呼び出せない問題の解決をしたいです。
呼出しプログラム
conn.Open();
command.ExecuteNonQuery();
は成功して、例外に引っかからないです。
けれどもFunctionが呼び出されません。
ただFunction実行されったぽい形跡がSQL実行履歴にあります。
ただ、戻り値などに値が何も設定されません。
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
using Oracle.ManagedDataAccess.Client;
namespace PlayGround1
{
class Program
{
static void Main(string[] args)
{
string connStr = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
try
{
//コネクションを生成する
using (OracleConnection conn = new OracleConnection())
{
//コネクションを取得する
conn.ConnectionString = connStr;
conn.Open();
//コマンドを生成する
using (OracleCommand command = new OracleCommand())
{
//コネクションを設定
command.Connection = conn;
//コマンドタイプに「ストアド」を設定
command.CommandType = CommandType.StoredProcedure;
//ストアド名を設定
command.CommandText = "GET_MSG_DESC";
var in1 = command.Parameters.Add("inMSG_NO", OracleDbType.Int32, 5, ParameterDirection.Input).Value = 1;
var ret = command.Parameters.Add("ret", OracleDbType.Char, ParameterDirection.ReturnValue);
//ストアドを実行する
command.ExecuteNonQuery();
string retStr = ret.Value.ToString();
}
//コネクションを切断する
conn.Close();
//コネクションを破棄する
conn.Dispose();
}
}
catch (Exception ex)
{
//エラー時はエラー内容をコンソールに出力する
Console.WriteLine(ex);
}
}
}
}
呼出すファンクション定義
GET_MSG_DESC
( inMSG_NO IN NUMBER
) RETURN CHAR IS
MSGDESC T_MSG_MS.MSG%TYPE;
BEGIN
SELECT
MSG INTO MSGDESC
FROM
T_MSG_MS
WHERE
MSG_NO = inMSG_NO
RETURN(MSGDESC);
EXCEPTION
WHEN OTHERS THEN
RETURN(TO_CHAR(inMSG_NO));
END GET_MSG_DESC;
例)
def greet
puts Hello World
end
環境
・Oracleクライアント
image.png
0