是否有可能正确地将一个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