日期:2014-05-17  浏览次数:20789 次

卡住了 求助
只是想写一个存储过程来实现这样一句SQL查询:
select * from user_tt where t_age>35;

看我写的(别笑我哈,刚接触ORACLE)
create or replace procedure test_pro 
is
begin
  select * from user_tt where t_age>35;
end;

通不过,不知错在哪里。。。帮帮忙吧~~~~

------解决方案--------------------
oracl存储过程 查询和sqlserver 是不一样的,只能用游标
------解决方案--------------------
SQL code

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就是将查询到的值赋给一个变量,如
SQL code

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后面没有跟 存储过程名字 ,其他的都是浮云。
------解决方案--------------------
查询结果用游标展现