A. oracle存储过程删除一条插入一条
Oracle存储过程可以用来删除和插入数据。要删除一条记录,可以使用DELETE语句,如下所示
DELETE FROM table_name
WHERE condition;
要插入一条记录,可以使用INSERT语句,如下所示:
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);
B. oracle 存储过程通过输入条件查询,返回多条记录和记录数。
create or replace procere Pro_Test(Conditions in varchar,
Codeing out char,
resmessage out varchar) is
v_Num number(2);
begin
select count(*) into v_Num from emp where ename like '%Conditions%';
if v_Num = 0 then
Codeing := '9999';
resmessage := '没有找到需要的数据';
else
Codeing := '0000';
resmessage := '有记录';
end if;
end Pro_Test;
照着上面的样式,再根据自己的需要改下吧。
C. oracle存储过程如何输出信息
可用DBMS_OUTPUT.PUT_LINE()对存储过程的进行输出。
编写存储过程:
create or replace procere test_pro(in_num number)
as
M number;
begin
M := in_num;
if 0 < M then
dbms_output.put_line('输出sql语句1');
elsif M < 3 then
dbms_output.put_line('输出SQL语句2');
else
dbms_output.put_line('nothing');
end if;
end;
(3)oracle存储过程行记录扩展阅读;
存储在数据库的数据字典中,存储在当前的应用中安全性由数据库提供安全保证,必须通过授权才能使用存储子程序,安全性靠应用程序来保证,如果能执行应用程序,就能执行该子程序。模式描述IN参数用来从调用环境中向存储过程传递值,不能给IN参数赋值,给此参数传递的值可以是常量、有值的变量、表达式等。
D. oracle查看执行过哪些存储过程
selectt.sql_id,
t.sql_text,
s.plan_hash_value,
s.optimizer_cost,
s.executions_total,
s.elapsed_time_total,
s.disk_reads_total,
s.buffer_gets_total
fromDBA_HIST_SQLSTATs,DBA_HIST_SQLTEXTt
wheres.sql_id=t.sql_id
andt.sql_textlike'%存储过程名称%';
没有想到其他好办法,确实不太好查了,把存储过程当作SQL来查找吧。
E. 如何用Oracle存储过程实现返回多行记录
存储过程输出参数为游标类型,给个DEMO给你
CREATE OR REPLACE PROCEDURE SELECTALLUSER(P_ALLUSER OUT SYS_REFCURSOR) IS
BEGIN
OPEN P_ALLUSER FOR
SELECT A.USERID,A.USERNAME,A.REALLYNAME,B.GROUPNAME FROM TBUSERS A,USERGROUP B WHERE A.GROUPID=B.GROUPID;
END SELECTALLUSER;
F. 存储过程中select语句怎么实现多行记录
也是习惯了SQL Server的存储过程中直接可以使用select语句输出结果集,但这个在Oracle中就行不通了。 如果你仅仅是想看到存储过程中语句所影响的记录内容,那么可以考虑使用游标,然后循环游标用dbms_output将内容输出,从而可以在dbms的输出中
G. oracle存储过程如何返回记录集
存储过程:
CREATE OR REPLACE PACKAGE pkg_test
AS
TYPE myrctype IS REF CURSOR;
PROCEDURE get (p_id NUMBER, p_rc OUT myrctype);
END pkg_test;
/
CREATE OR REPLACE PACKAGE BODY pkg_test
AS
PROCEDURE get (p_id NUMBER, p_rc OUT myrctype)
IS
sqlstr VARCHAR2 (500);
BEGIN
IF p_id = 0 THEN
OPEN p_rc FOR
SELECT ID, NAME, sex, address, postcode, birthday
FROM student;
ELSE
sqlstr :=
'select id,name,sex,address,postcode,birthday
from student where id=:w_id';
OPEN p_rc FOR sqlstr USING p_id;
END IF;
END get;
END pkg_test;
/
存储函数:
CREATE OR REPLACE
package pkg_test as
type myrctype is ref cursor;
function get(intID number) return myrctype;
end pkg_test;
/
CREATE OR REPLACE
package body pkg_test as
function get(intID number) return myrctype is
rc myrctype; --定义ref cursor变量
sqlstr varchar2(500);
begin
if intID=0 then
--静态测试,直接用select语句直接返回结果
open rc for select id,name,sex,address,postcode,birthday from student;
else
--动态sql赋值,用:w_id来申明该变量从外部获得
sqlstr := 'select id,name,sex,address,postcode,birthday from student where id=:w_id';
--动态测试,用sqlstr字符串返回结果,用using关键词传递参数
open rc for sqlstr using intid;
end if;
return rc;
end get;
end pkg_test;
/
H. 如何查看oracle中存储过程执行的历史记录
select t.sql_id,
t.sql_text,
s.plan_hash_value,
s.optimizer_cost,
s.executions_total,
s.elapsed_time_total,
s.disk_reads_total,
s.buffer_gets_total
from DBA_HIST_SQLSTAT s, DBA_HIST_SQLTEXT t
where s.sql_id=t.sql_id
and t.sql_text like'%存储过程名称%';
没有想到其他好办法,确实不太好查了,把存储过程当作SQL来查找吧。
I. oracle中的存储过程,执行后oracle自己会记录执行日志到数据库中么,比如执行时间结果,从哪能查看到
不会记录,只会记录存储过程里的SQL语句到v$sql里
J. Oracle存储过程返回记录集
declare
begin
for a in(select s.stuid,s.stuname,s.stusex,c.classnum,c.classname ,r.sturesults tmp from student s
left join result r on s.stuid=r.stuid
left join calss c on r.classnum=c.classnum
)
case when a.tmp>90 then
你要执行的操作;
case when a.tmp>60 and a.tmp<90 then
你要执行的操作;
case when a.tmp<60 then
你要执行的操作;
else
end case;
end;