日期:2014-05-17 浏览次数:20806 次
create or replace procedure test_pro is sqlstr varchar2(1000); begin sqlstr := 'select * from user_tt where t_age>35'; execute immediate(sqlstr); end;
------解决方案--------------------
oracle 在pl/sql语句块中,也就是如begin..end 之类的语句中,使用select 语句必须与into一起使用才有意义。不然它检索出来的结果不知道放到哪里去。如楼上的,使用动态sql也行,只不过查询语句用动态sql,根本看不到数据的。
------解决方案--------------------
CREATE OR REPLACE PROCEDURE 存储过程名字
(
参数1 IN NUMBER,
参数2 IN NUMBER
) IS
变量1 INTEGER :=0;
变量2 DATE;
BEGIN
XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
END 存储过程名字;
好好看看吧,是你end后面没有跟 存储过程名字 ,其他的都是浮云。
------解决方案--------------------
总结三楼和四楼的 可以得到正解。
------解决方案--------------------
不知道二楼的能否执行,如果是在存储过程中使用查询都是select into 一起使用的,select into就是将查询到的值赋给一个变量,如
CREATE OR REPLACE RROCEDURE PROC_SELECT IS S_ID INTEGER; BEGIN SELECT T.ID INTO S_ID FROM user_tt T where t_age>35; END;
------解决方案--------------------
CREATE OR REPLACE PROCEDURE 存储过程名字
(
参数1 IN NUMBER,
参数2 IN NUMBER
) IS
变量1 INTEGER :=0;
变量2 DATE;
BEGIN
XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
END 存储过程名字;
好好看看吧,是你end后面没有跟 存储过程名字 ,其他的都是浮云。
------解决方案--------------------
查询结果用游标展现