需要使用绑定变量,碰到一个貌似简单的问题。请高手指教!
举个简单的例子说明以下问题!
一张表student
序号 编号 姓名 日期 年龄
210 20 NAME10 2012/3/29 16:26:06 22
209 19 NAME9 2012/3/29 16:26:06 21
208 18 NAME8 2012/3/29 16:26:06 20
207 17 NAME7 2012/3/29 16:26:06 19
206 16 NAME6 2012/3/29 16:26:06 18
205 15 NAME5 2012/3/29 16:26:06 17
204 14 NAME4 2012/3/29 16:26:06 16
203 13 NAME3 2012/3/29 16:26:06 15
202 12 NAME2 2012/3/29 16:26:06 14
201 11 NAME1 2012/3/29 16:26:06 13
--
DECLARE v_age INT :=20;
BEGIN
SELECT * FROM student s WHERE s.sname LIKE '%NAME%' AND s.sage>:v_age;
END;
--
执行报错说是“并非所有变量都已绑定”,请问要是在MS-SQL里这样的逻辑很好理解,也可执行。
在Oracle怎么使绑定变量和其他筛选条件一起执行?
举个简单的例子说明以下问题!
一张表student
序号 编号 姓名 日期 年龄
210 20 NAME10 2012/3/29 16:26:06 22
209 19 NAME9 2012/3/29 16:26:06 21
208 18 NAME8 2012/3/29 16:26:06 20
207 17 NAME7 2012/3/29 16:26:06 19
206 16 NAME6 2012/3/29 16:26:06 18
205 15 NAME5 2012/3/29 16:26:06 17
204 14 NAME4 2012/3/29 16:26:06 16
203 13 NAME3 2012/3/29 16:26:06 15
202 12 NAME2 2012/3/29 16:26:06 14
201 11 NAME1 2012/3/29 16:26:06 13
--
DECLARE v_age INT :=20;
BEGIN
SELECT * FROM student s WHERE s.sname LIKE '%NAME%' AND s.sage>:v_age;
END;
--
执行报错说是“并非所有变量都已绑定”,请问要是在MS-SQL里这样的逻辑很好理解,也可执行。
在Oracle怎么使绑定变量和其他筛选条件一起执行?
s.sage>:v_age这个是? s.sage>=v_age?
Connected as scottSQL> set timing on;
Executed in 0.468 seconds
SQL> create table test(id varchar2(8));
Table created
Executed in 0 seconds
SQL>
SQL> declare
2 s varchar2(300);
3 begin
4 for i in 1..100000 loop
5 s:='insert into test (id) values('||i||')';
6 execute immediate s;
7 end loop;
8 end;
9 /
PL/SQL procedure successfully completed
Executed in 84.516 seconds
SQL>
SQL> declare
2 s varchar2(300);
3 begin
4 for i in 1..100000 loop
5 s:='insert into test (id) values(:1)';
6 execute immediate s using i;
7 end loop;
8 end;
9 /
PL/SQL procedure successfully completed
Executed in 3.141 seconds
SQL>
DECLARE @v_age INT ;
SET @v_age=20;
SELECT *FROM student s WHERE s.sname LIKE '%NAME%' AND s.sage>@v_age;在Oracle里应该怎么写?
SET @v_age:=20;
SELECT *FROM student s WHERE s.sname LIKE '%NAME%' AND s.sage>@v_age;