刚刚接触存储过程,有些简单的问题,想问一下
有这么一个学生表:
CREATE TABLE student
(
sno VARCHAR2(7) PRIMARY KEY,
sname VARCHAR2(20) NOT NULL,
sage NUMBER(2) NOT NULL
);上面的表要创建一个查询的存储过程,要求:
SELECT * FROM student;
这个简单的过程应该怎么创建?头一次接触存储过程,请示详细并可以执行的源码,不要一代而过 。
有这么一个学生表:
CREATE TABLE student
(
sno VARCHAR2(7) PRIMARY KEY,
sname VARCHAR2(20) NOT NULL,
sage NUMBER(2) NOT NULL
);上面的表要创建一个查询的存储过程,要求:
SELECT * FROM student;
这个简单的过程应该怎么创建?头一次接触存储过程,请示详细并可以执行的源码,不要一代而过 。
这个不需要用存储过程的,能用语句完成的就不要去用过程嘛
在oracle中select 要与into 配合使用
也就是说 你查询出来的东西要有个地方放
create or replace procecdure 过程名 参数
is
begin语句 do something;
end;
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);
print c_cur;
is
beginSELECT * FROM student;
end;
create or replace PROCEDURE PRO_NAME(cur_name out SYS_REFCURSOR) --cur_name:为输出游标,调用时不用传参数
ASBEGIN open cur_name for
select * from student;END PRO_NAME;
create or replace procedure p_stu(no student.sno%type,cur out sys_refcursor)
as
begin
open cur select * from student where sno=no;
end;
--调用
var cur1 refcursor
exec p_stu(学号,:cur1)
print cur1
create or replace procedure p_stu(cur out sys_refcursor)
as
begin
open cur select * from student;
end;--调用
var cur1 refcursor
exec p_stu(:cur1)
print cur1