簡體   English   中英

將 Oracle PL/SQL 代碼轉換為 C# 使用 ado.net

[英]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.

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