是否有可能正確地將一個OracleParameter傳遞給一個pl/sql存儲過程中的布爾參數?odp.net可以將參數傳遞給布爾pl/sql參數嗎?
4
A
回答
2
您不能在SQL中使用布爾參數。因此調用一個存取過程或返回一個布爾值的存儲過程在SQL中不起作用。在pl/sql塊中使用這樣的過程沒有問題。
從JCallico答案增加:
我使用以下解決方法來繞過此限制:
- 裹使用匿名塊函數調用。
- 返回包含1或0的輸出變量。
- 讀取輸出變量並將其轉換爲布爾值。
下面是一些示例代碼:
using (var connection = new OracleConnection("<connection string>"))
{
var command = new OracleCommand();
command.Connection = connection;
command.CommandText =
"declare v_bool boolean;" +
"begin " +
"v_bool := auth_com.is_valid_username (:username); "+
"if (v_bool = TRUE) then select 1 into :v_result from dual; end if; " +
"if (v_bool = FALSE) then select 0 into :v_result from dual; end if; " +
"end;";
command.Parameters.Add(new OracleParameter { ParameterName = "username", OracleDbType = OracleDbType.NVarchar2, Size=512, Direction = ParameterDirection.Input });
command.Parameters.Add(new OracleParameter { ParameterName = "v_result", OracleDbType = OracleDbType.Decimal, Direction = ParameterDirection.Output });
try
{
connection.Open();
command.ExecuteNonQuery();
}
finally
{
connection.Close();
}
bool success = Convert.ToBoolean(((OracleDecimal)command.Parameters["v_result"].Value).ToInt32());
}
編輯:
亞歷KEH從甲骨文,2013年10月:
我們正在支持ODP.NET計劃近期內管理提供商 中的布爾值,可能在明年年中。
9
我使用以下解決方法來繞過此限制:
- 裹使用匿名塊函數調用。
- 返回包含1或0的輸出變量。
- 讀取輸出變量並將其轉換爲布爾值。
下面是一些示例代碼:
using (var connection = new OracleConnection("<connection string>"))
{
var command = new OracleCommand();
command.Connection = connection;
command.CommandText =
"declare v_bool boolean;" +
"begin " +
"v_bool := auth_com.is_valid_username (:username); "+
"if (v_bool = TRUE) then select 1 into :v_result from dual; end if; " +
"if (v_bool = FALSE) then select 0 into :v_result from dual; end if; " +
"end;";
command.Parameters.Add(new OracleParameter { ParameterName = "username", OracleDbType = OracleDbType.NVarchar2, Size=512, Direction = ParameterDirection.Input });
command.Parameters.Add(new OracleParameter { ParameterName = "v_result", OracleDbType = OracleDbType.Decimal, Direction = ParameterDirection.Output });
try
{
connection.Open();
command.ExecuteNonQuery();
}
finally
{
connection.Close();
}
bool success = Convert.ToBoolean(((OracleDecimal)command.Parameters["v_result"].Value).ToInt32());
}
編輯:
亞歷KEH從甲骨文,2013年10月:
我們正在支持ODP.NET計劃近期內管理提供商 中的布爾值,可能在明年年中。
相關問題
- 1. 我可以將參數/開關/參數傳遞給VSPackage MenuCommand嗎?
- 2. 可以將可變數量的參數傳遞給函數嗎?
- 3. 我可以將參數傳遞給PowerShell函數Unix方式嗎?
- 4. 我可以將參數傳遞給std :: vector排序函數嗎?
- 5. 我可以將參數傳遞給模型函數嗎?
- 6. JSF:將字符串參數傳遞給布爾函數
- 7. 我可以將參數傳遞給客戶端HTML頁面嗎?
- 8. 我可以將參數傳遞給F#FAKE構建腳本嗎?
- 9. 您可以將其他參數傳遞給謂詞嗎?
- 10. 我可以將參數傳遞給Pig腳本中的UDF嗎?
- 11. 我們可以將參數傳遞給C中的信號嗎?
- 12. 我可以在NHibernate中將參數傳遞給ISessionFactory嗎?
- 13. 使用Watir時,我可以將-f參數傳遞給iexplore.exe嗎?
- 14. 我可以將參數傳遞給我的fsyacc分析器嗎?
- 15. 我可以將其他參數傳遞給Ember-Model belongsTo嗎?
- 16. 我可以將參數從Qt Creator傳遞給xcodebuild嗎?
- 17. 可以將值或參數傳遞給用戶控件嗎?
- 18. 你可以將一個參數傳遞給sigaction嗎?
- 19. 我可以將參數傳遞給jqModal中的ajax嗎?
- 20. 我們可以將參數傳遞給SQL中的視圖嗎?
- 21. 我可以將knife.rb作爲參數傳遞給knife命令嗎?
- 22. 我可以將參數傳遞給ClearCase觸發器嗎?
- 23. 我可以將參數傳遞給rake db:seed嗎?
- 24. 我可以使用JSF flash將參數傳遞給Servlet嗎?
- 25. 我可以將參數從Grunt傳遞給Javascript嗎?
- 26. 我可以將參數傳遞給iphone方法的clickedButtonAtIndex嗎?
- 27. 我可以將複雜參數傳遞給Java Applet嗎?
- 28. 將參數傳遞給Factory方法可以嗎?
- 29. 我可以將參數傳遞給Xamarin中的Clicked事件嗎?
- 30. 將NULL值傳遞給rdlc報告布爾參數
是否有解決方法?我可以通過其他類型嗎? – haymansfield 2010-06-23 08:07:50
您可以重新定義您的程序,使其取Y/N值或1/0。隨你喜歡。 – Rene 2010-06-23 09:02:46
有些時候,修改原始功能不是一個選項。請參閱下面的解決方法。 – JCallico 2010-12-07 15:34:02