这种过程想要看到输出值一般来说是用dbms_output包中的put_line来做的,在serverout 开启的情况下,这个会包中的函数会将查询的结果什么的,直接打印在屏幕上。
为千山等地区用户提供了全套网页设计制作服务,及千山网站建设行业解决方案。主营业务为成都做网站、网站建设、千山网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
其他时间的查询结果只会在后台作为了一个过程量存在(这里查询语句中显示的1,就是一个过程量,当过程执行完,或者这个1传递完,那么这个1也就消失了),除非你将查询结果插入一张表内,这样的话你就能看见存储在那张插入表内的结果了,一般来说过程中的量是不会直接输出到屏幕上的。(如果是自定义函数有返回值,那么肯定是可以输出到屏幕上的)
当然还有一种情况能看到查询结果,那就是调试,调试过程的时候(其实就是一步一步的执行过程,有些工具是一行一行的),用工具能看到每一步的结果。
oracle记录中选择出第一条记录的方法。
如下参考:
1.创建测试表
Createtabletest_order(idnumber,valuevarchar2(50));
2.插入测试数据
插入test_order值(3,'v3');
插入test_order值(2,'v2');
插入test_order值(1,'v1');
插入test_order值(5,'v5');
插入test_order值(4,'v4');
提交;
3.检查查询表中的全部数据,可以发现数据没有排序,选择t。*,rowidfromtest_ordert;
4.写SQL,数据只要第一个记录(不是rownum=1)select*from(selectt)。*,row_number()/(orderbyid)rnfromtest_ordert)t,其中rn=1;
你可以在cmd底下试试exp指令。\x0d\x0aexp username/password@tnsname owner=要导出的用户名 file=.....\x0d\x0aexp具体的参数你可以到网上详细查一下。 \x0d\x0a\x0d\x0a基本语法和实例: \x0d\x0a 1、EXP: \x0d\x0a 有三种主要的方式(完全、用户、表) \x0d\x0a 1、完全: \x0d\x0a EXP SYSTEM/MANAGER BUFFER=64000 FILE=C:\FULL.DMP FULL=Y \x0d\x0a 如果要执行完全导出,必须具有特殊的权限 \x0d\x0a 2、用户模式: \x0d\x0a EXP SONIC/SONIC BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC \x0d\x0a 这样用户SONIC的所有对象被输出到文件中。 \x0d\x0a 3、表模式:\x0d\x0a EXP SONIC/SONIC BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC TABLES=(SONIC) \x0d\x0a 这样用户SONIC的表SONIC就被导出
declare
v_num number;
v_now number;
v_yes number;
c_max number;
begin
v_num:=1;
c_max:=200;--这里设置最大数,想要100这内就写100,想要1000之内就写1000
loop
v_now:=2;--这里设置每一个数的初始被除数,从2开始
v_yes:=1;--设置初始参考数,1为素数,0为非素数,默认初始为1
if v_num4 then
dbms_output.put_line(v_num);--1到3都是素数,这里就不再判断了
-- v_num:=v_num+1;--自增1
end if;
if v_num=4 then
--这里开始判断,只能被1和本身整除的数,就是素数
loop
if mod(v_num,v_now)=0 and v_numv_now then --如果有能被整除的数,且被除数不是除数本身,就不是素数
v_yes:=0;
end if;
v_now:=v_now+1;--被除数递增
exit when v_now=v_num;--当被除数大于除数时退出
end loop;--因为要一个一个的判断,所以要来一次循环
end if;
if v_num4 and v_yes=1 then
dbms_output.put_line(v_num);
-- v_num:=v_num+1;--自增
end if;
v_num:=v_num+1;--自增
exit when v_num=c_max;
end loop;
end;
参考一下,自己写的
可用DBMS_OUTPUT.PUT_LINE()对存储过程的进行输出。
编写存储过程:
create or replace procedure 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;
扩展资料;
存储在数据库的数据字典中,存储在当前的应用中安全性由数据库提供安全保证,必须通过授权才能使用存储子程序,安全性靠应用程序来保证,如果能执行应用程序,就能执行该子程序。模式描述IN参数用来从调用环境中向存储过程传递值,不能给IN参数赋值,给此参数传递的值可以是常量、有值的变量、表达式等。
参考资料来源:百度百科-Oracle存储过程
create table student (id number(2),name varchar2(20));
insert into student values (1,'A,B,C');
insert into student values (2,'D,E');
commit;
select distinct id, regexp_substr(name, '[^,]+', 1, level) name
from student
connect by level = length(name) - length(replace(name, ',')) + 1 order by id,name;