[英]Convert Oracle PL/SQL code to C# use ado.net
我使用 .net 4 和 oracle sql 並執行此塊代碼:
DECLARE
Wresult NUMBER;
BEGIN
Wresult :=tis.fuc(1, 3, 5, 44, '3311');
DBMS_OUTPUT.put_line(Wresult);
END;
當我運行不正確的輸入時,我得到“1”。
當我運行正確的輸入時,我得到“0”。
如何將“0”或“1”結果顯示為 c# 使用 ado.net?
這是我的代碼 ado.not:
string str1 = "declare Wresult number;" +
"begin " +
"w:=tis.fuc(:pre1, :pre2, :pre3, :pre4, :pre5);" +
"DBMS_OUTPUT.put_line(Wresult);" +
"end;";
using (OracleConnection connection = new OracleConnection(OracleServer))
{
connection.Open();
using (OracleCommand command = new OracleCommand(str1, connection))
{
command.CommandType = CommandType.Text;
command.Parameters.Add("pre1", OracleDbType.Int32).Value = 1;
command.Parameters.Add("pre2", OracleDbType.Int32).Value = in1;
command.Parameters.Add("pre3", OracleDbType.Int32).Value = in2;
command.Parameters.Add("pre4", OracleDbType.Int32).Value = in3;
command.Parameters.Add("pre5", OracleDbType.Int32).Value = in4;
//command.Parameters.Add("Wresult", OracleDbType.Int32, ParameterDirection.Output);
var result1 = command.ExecuteNonQuery();
//var result1 = command.Parameters["Wresult"].Value;
//vv = Convert.ToInt32(command.Parameters["Wresult"].Value);
}
connection.Close();
}
我用它來獲取 output 但不起作用。
//command.Parameters.Add("Wresult", OracleDbType.Int32, ParameterDirection.Output);
最后
var result1 = command.ExecuteNonQuery();
輸出 result1 不正確或正確的輸入是 -1 並且當輸入正確時 output 是有效的但不顯示在 C# 上僅在數據庫背景上。
string str1 = "declare Wresult number;" +
"begin " +
"w:=tis.fuc(:pre1, :pre2, :pre3, :pre4, :pre5);" +
"DBMS_OUTPUT.put_line(Wresult);" +
"end;";
OUT 值仍然是一個綁定變量,因此它應該如下所示:
string str1 = "begin " +
":wout := tis.fuc(:pre1, :pre2, :pre3, :pre4, :pre5);" +
"end;";
此時您將擁有:
command.Parameters.Add("wout", OracleDbType.Int32, ParameterDirection.Output);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.