急!! ora-00920错。where 后是否可以直接带函数么?
想通过语句
select * from news_ED where fn_News_GetViewSql(0,'通知公告',1)
生成动态条件来取信息,结果出现了 ora-00920:invalid relational operator。
其中fn_News_GetViewSql()函数返回结果是 “1=1 and Category in (15,16,17,2)”
若直接运行:
select * from news_ED where 1=1 and Category in (15,16,17,2)
则可以正常执行
where 后是否可以直接带函数么?
请高手们帮忙解决,谢谢! 很急!!!!
------解决方案--------------------SQL code
“1=1 and Category in (15,16,17,2)”
“ 1=1 and Category in (15,16,17,2)”
------解决方案--------------------
fn_News_GetViewSql(0,'通知公告',1)
这个函数返回的是 字符串?
就像 直接和前面的查询语句连接起来 select xxx where '' 的效果,这种拼接需要动态执行,或者在程序中你 先调用 函数 返回拼接好的sql串返回 ,再连接前面的sql !
------解决方案--------------------
直接在sql里面肯定不认识 '12,33,45,22' 要不你就整个临时表存这些东西 ,然后where后面 查一下
------解决方案--------------------
原因可能是该函数返回的只是一个字符值,一个非boolean的值无法进行判断
不知道是否正确?
------解决方案--------------------
+1。若需要也可声明参数传入fn_News_GetViewSql
------解决方案--------------------
函数传进来的值 在sql里面会判断成'15,16,17,2'一个字符串 肯定会报错 可以考虑存储