select在存储过程中这样使用行不行?
CODE:create or replace procedure test
(
dd number
)
as
begin
select * from res where a=dd;
end;表res已按要求建好,但此代码编译的时候总是过不了,请高手指教!
CODE:create or replace procedure test
(
dd number
)
as
begin
select * from res where a=dd;
end;表res已按要求建好,但此代码编译的时候总是过不了,请高手指教!
解决方案 »
- 数据库中的表记录莫名其妙的被删除了
- 时间加减比较问题
- oracle 分组update 问题
- 连续时间的判断………………
- Oracle中如何实现以表名作为参数的存储过程?
- 求教一过程怎么写,写不出就死人了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 字段名是Oracle关键字,Select语句该怎么写?
- to_date格式的问题
- 请问:简单的位运算select 3&1 from dual 为什么报错?
- sql 后一笔数据由 前几笔数据计算出来
- 数据库中表删除后,出现奇怪的表名
- ORACAL TNS 12505 ORA-12505 TNS:listener does not currently know of SID given in
--oracle的语法通不过
--如果是简单的这个需求用一个sql语句就好了啊 没必要用过程
--oracle中select出来的值要放到变量里
select 字段名
into 变量
from res where a=dd;
--定义存储游标变量
rowresult emp%rowtype;
--定义游标
cursor cur is select * from emp where sal >2000;
begin
open cur;--打开
loop--循环
fetch cur into rowresult;--提取
exit when cur%notfound;--退出
dbms_output.put_line('员工姓名:'||rowresult.ename);--从游标变量中取某个字段值
end loop;
close cur;--关闭
end;
CODE:create or replace procedure test
(
@dd int
)
as
begin
select * from res where a=@dd;
end;
这个好像是SQLserver中的写法,在oracle中不能这样吧!
貌似这个存储过程有点问题吧,因为,你这并没有返回的值。返回的值没有用到变量里,当然就报错了。如果是返回的所有字段,可以使用游标,按4楼的来做。
-- 当你必须返回结果集时,必须借助游标!
-- 例如:
-- 实例:Oracle存储过程返回数据集CREATE table userinfo(id number(18,0), name varchar2(30), sex varchar2(10), age number(3,0), address varchar2(100));insert into userinfo(id,name,sex,age,address) values(1,'luoyoumou','男',33,'湖南省衡阳市');
insert into userinfo(id,name,sex,age,address) values(2,'miaoxiaoming','男',32,'江西省吉安市');
insert into userinfo(id,name,sex,age,address) values(3,'hanqiguang','男',28,'江西省赣州市');commit;-- create table userinfo2 as select * from userinfo where 1=2;-- i_address 是存储过程的输入参数,o_cur是存储过程的输出游标参数,用以获取返回的结果集!
CREATE OR REPLACE PROCEDURE userinfo_proc(i_address VARCHAR2, o_cur OUT SYS_REFCURSOR)
IS
sqlstr VARCHAR2(200); -- 定义变量,用以存放SQL语句
BEGIN
sqlstr := 'SELECT Id, Name, Sex, Age, Address FROM userinfo WHERE Address = :i_address'; -- 给SQL变量赋值,其中 :i_address 是绑定变量,以提高执行效率!
OPEN o_cur FOR sqlstr USING i_address; -- 给游标变量赋值
END;
/
set serveroutput on;
var c_cur refcursor;
exec userinfo_proc('湖南省衡阳市',:c_cur);