日期:2014-05-16  浏览次数:21743 次

请教:oracle中如何在select中使用变量
定义变量;
给变量赋值;
select * from 表where 字段=变量;

上面的SQL语句在SQL Server中使用是非常简单的, 但小弟初学oracle, 不明白oracle如何处理, 请各位大侠指点!

------解决方案--------------------
引用:
定义变量;
给变量赋值;
select * from 表where 字段=变量;

上面的SQL语句在SQL Server中使用是非常简单的, 但小弟初学oracle, 不明白oracle如何处理, 请各位大侠指点!

动态SQL
------解决方案--------------------
v_sql:='select * from 表where 字段='
------解决方案--------------------
var1
------解决方案--------------------
'';
------解决方案--------------------
引用:
Quote: 引用:


引用:


象这样接接SQL语句, 难道就不怕SQL注入?

这只是举例,前面肯定要有自定义判断啊
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:


引用:


象这样接接SQL语句, 难道就不怕SQL注入?

这只是举例,前面肯定要有自定义判断啊


搞这么复杂, 就没有一个简单一点类似sql server的做法吗?

还有这种动态变量绑定
execute immediate 'select * from table where col=:1' using var1;
------解决方案--------------------
我不知道sqlserver怎么做的,但我觉得任何关系到用户输入的都应该先有特定的判断筛选,
这都嫌复杂就太不专业了
------解决方案--------------------
引用:
Quote: 引用:


我目前的SQL是:
select * from dxjxt.jxtudprecv_view mt where CARDID='EE9935F5'
如你所说, 用动态变量绑定的话, 如何把具体值给换成变量呢?
 

var varchar2(20);
execute immediate 'select * from dxjxt.jxtudprecv_view mt where CARDID=:1' into xxx(接收你的查询结果) using var1;
------解决方案--------------------

declare
   v_card_id varchar2(40);--定义变量;
   v_cur sys_refcursor;
begin
   v_card_id := 'EE9935F5'; --给变量赋值;
   open v_cur for select * from 表 where 字段=v_card_id;