oracle 拼装字符串 传入存储过程 查询无数据
if (dt != null && dt.Rows.Count > 0)
{
foreach (DataRow dr in dt.Rows)
{
getid += "'" + dr["TypeID"] + "',";
}
}
getid = getid.Remove(getid.LastIndexOf(","), 1);
return getid;
以上就是方法的核心代码,调用存储过程传参数,这个执行,查询没有数据,如果在调试的时候把这个返回的字符串直接写入存储过程参数位置 查询就有数据,不晓得为什么 谁晓得
------最佳解决方案--------------------是不是参数传递的时候 多拼装了一层双引号啊
楼主可以试着把传递之前和传递之后的参数打印出来看看
语言和数据库转换的时候 系统有可能会默认增加一层双引号的
------其他解决方案--------------------你这段Java代码能返回正常的字符串吗?
能的话你发它有什么用?发个正确代码,让人猜你错误代码?
------其他解决方案--------------------db.AddParam("TypeID", GetCustomerTypeid("1"));//下面的方法
db.AddParam("dt", OracleType.Cursor, ParameterDirection.Output);
DataTable dtCount = db.ExecuteDataTable("Report_Package_excel.USP_GetRecordByPage", CommandType.StoredProcedure);
//c#调用存储过程
public string GetCustomerTypeid(string id)
{
string getid = "";
string sql = @"select TypeID from SEARCHCONFIGRELATION WHERE ConfigID=:ConfigID";
using (Database db = DatabaseFactory.CreateDatabase())
{
db.ClearParam();
db.AddParam(":ConfigID", id);
DataTable dt = db.ExecuteDataTable(sql, CommandType.Text);
if (dt != null && dt.Rows.Count > 0)
{
foreach (DataRow dr in dt.Rows)
{
&