oracle 拼装字符串 传入存储过程 查询无数据

ylwqhr 2012-10-29 11:20:49
if (dt != null && dt.Rows.Count > 0)
{
foreach (DataRow dr in dt.Rows)
{
getid += "'" + dr["TypeID"] + "',";
}
}
getid = getid.Remove(getid.LastIndexOf(","), 1);
return getid;

以上就是方法的核心代码,调用存储过程传参数,这个执行,查询没有数据,如果在调试的时候把这个返回的字符串直接写入存储过程参数位置 查询就有数据,不晓得为什么 谁晓得
...全文
216 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
UPC子夜 2012-11-09
  • 打赏
  • 举报
回复
引用 4 楼 ylwqhr 的回复:
传递之后的参数打印不出来
写个insert语句 往自己的log表里写记录总可以吧
ylwqhr 2012-10-29
  • 打赏
  • 举报
回复
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)
{
getid += "'" + dr["TypeID"] + "',";
}
}
getid = getid.Remove(getid.LastIndexOf(","), 1);
return "("+getid+")";
}
}
forgetsam 2012-10-29
  • 打赏
  • 举报
回复
你这段Java代码能返回正常的字符串吗?

能的话你发它有什么用?发个正确代码,让人猜你错误代码?
ylwqhr 2012-10-29
  • 打赏
  • 举报
回复
传递之后的参数打印不出来
UPC子夜 2012-10-29
  • 打赏
  • 举报
回复
是不是参数传递的时候 多拼装了一层双引号啊
楼主可以试着把传递之前和传递之后的参数打印出来看看
语言和数据库转换的时候 系统有可能会默认增加一层双引号的

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧