当前位置:首页 » 服务存储 » oracle存储过程行记录
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

oracle存储过程行记录

发布时间: 2023-02-23 03:58:39

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;