oracleprocedure怎么写
1.Oracle中写procedure如何判断某个表中有没有数据
create procedure 过程名 is
count_data number(8);
定义临时参数;
begin
select count(*) into count_data from 表名;
if count_data > 0 then
select 字段名 into 临时参数 from 表名;
elsif count_data = 0 then
另一步逻辑;
else
dbms_output.put_line("报错");
end if;
end;
2.SQL中Procedure怎么用,下面这题怎么写
存储过程procedure 参见/view/68525.htm
此题解法:
--创建过程
create procedure getCarNumber
@p_model varchar(8),
@p_noofcars int output
as
declare @des varchar(30)
select @p_noofcars=count(*),@des=description from I_MODEL where Model_name=@p_model
select @des
go
--调用
declare @result int
exec getCarNumbers 'FERR TR',@result
select @result
3.oracle存储过程我在包中写了个过程,如下:procedure
如果你是调用包里的存储过程,就要在PL块里写: 包的名字。
存储过程名(参数); 关于你说的游标我不知道是强游标还是弱游标! 要是静态游标可以在存储过程里写 例: cursor 游标名 is select * from emp; emprow 游标名%rowtype; for emprow in 游标名 loop dbms_output。 put_line(emprow。
字段名); end loop; 动态游标就不能用以上循环打应该用loop end loop; 例如 type Refcursor is ref cursor emp%type; empcur Refcursor; open empcur for select * from emp; emprow 游标名%rowtype; loop fetch empcur into emprow; dbms_output。 put_line(emprow。
字段名); end loop; 不知道对你有没有帮助。
4.oracle存储过程怎么写
一、无参程序过程语法
create or replace procedure NoParPro
as ;
begin
;
exception //存储过程异常
;
end;
二、带参存储过程实例
create or replace procedure queryempname(sfindno emp.empno%type) as
sName emp.ename%type;
sjob emp.job%type;
begin
.
exception
.
end;
三、带参数存储过程含赋值方式
create or replace procedure runbyparmeters (isal in emp.sal%type, sname out varchar,sjob in out varchar)
as icount number;
begin
select count(*) into icount from emp where sal>isal and job=sjob;
if icount=1 then
.
else
.
end if;
exception
when too_many_rows then
DBMS_OUTPUT.PUT_LINE('返回值多于1行');
when others then
DBMS_OUTPUT.PUT_LINE('在RUNBYPARMETERS过程中出错!');
end;
在Oracle中对存储过程的调用
过程调用方式一
declare
realsal emp.sal%type;
realname varchar(40);
realjob varchar(40);
begin //存储过程调用开始
realsal:=1100;
realname:='';
realjob:='CLERK';
runbyparmeters(realsal,realname,realjob); --必须按顺序
DBMS_OUTPUT.PUT_LINE(REALNAME||' '||REALJOB);
END; //过程调用结束
过程调用方式二
declare
realsal emp.sal%type;
realname varchar(40);
realjob varchar(40);
begin //过程调用开始
realsal:=1100;
realname:='';
realjob:='CLERK';
runbyparmeters(sname=>realname,isal=>realsal,sjob=>realjob); --指定值对应变量顺序可变
DBMS_OUTPUT.PUT_LINE(REALNAME||' '||REALJOB);
END; //过程调用结束
给你参考一下,希望对你有所帮助
祝你好运
5.Oracle 的存储过程怎么写
oracle 存储过程的基本语法
1.基本结构
CREATE OR REPLACE PROCEDURE 存储过程名字
(
参数1 IN NUMBER,
参数2 IN NUMBER
) IS
变量1 INTEGER :=0;
变量2 DATE;
BEGIN
END 存储过程名字
2.SELECT INTO STATEMENT
将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条
记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND)
例子:
BEGIN
SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx;
EXCEPTION
WHEN NO_DATA_FOUND THEN
xxxx;
END;
3.IF 判断
IF V_TEST=1 THEN
BEGIN
do something
END;
END IF;
4.while 循环
WHILE V_TEST=1 LOOP
BEGIN
XXXX
END;
END LOOP;
5.变量赋值
V_TEST := 123;
6.用for in 使用cursor
IS
CURSOR cur IS SELECT * FROM xxx;
BEGIN
FOR cur_result in cur LOOP
BEGIN
V_SUM :=cur_result.列名1+cur_result.列名2
END;
END LOOP;
END;
7.带参数的cursor
CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID=C_ID;
OPEN C_USER(变量值);
LOOP
FETCH C_USER INTO V_NAME;
EXIT FETCH C_USER%NOTFOUND;
do something
END LOOP;
CLOSE C_USER;
8.用pl/sql developer debug
连接数据库后建立一个Test WINDOW
在窗口输入调用SP的代码,F9开始debug,CTRL+N单步调试
6.oracle存储过程循环怎么写
Oracle中有三种循环(For、While、Loop):
1、loop循环:
create or replace procedure pro_test_loop is
i number;
begin
i:=0;
loop
i:=i+1;
dbms_output.put_line(i);
if i>5 then
exit;
end if;
end loop;
end pro_test_loop;
2、while循环:
create or replace procedure pro_test_loop is
i number;
begin
i:=0;
while i
oracle怎么写commit
1.oracle的commit
oracle的commit就是提交数据(这里是释放锁不是锁表),在未提交前你前面的操作更新的都是内存,没有更新到物理文件中。
执行commit从用户角度讲就是更新到物理文件了,事实上commit时还没有写date file,而是记录了redo log file,要从内存写到data物理文件,需要触发检查点,由DBWR这个后台进程来写,这里内容有点多的,如果不深究的话你就理解成commit即为从内存更新到物理文件。锁有很多种,一般我们关注的都是DML操作产生的,比如insert,delete,update,select。
for update都会同时触发表级锁和行级锁 补充:对的,insert以后commit之前是锁表的状态,其他事务无法对该表进行操作。
2.oracle的commit
oracle的commit就是提交数据(这里是释放锁不是锁表),在未提交前你前面的操作更新的都是内存,没有更新到物理文件中。
执行commit从用户角度讲就是更新到物理文件了,事实上commit时还没有写date file,而是记录了redo log file,要从内存写到data物理文件,需要触发检查点,由DBWR这个后台进程来写,这里内容有点多的,如果不深究的话你就理解成commit即为从内存更新到物理文件。
锁有很多种,一般我们关注的都是DML操作产生的,比如insert,delete,update,select。for update都会同时触发表级锁和行级锁
补充:对的,insert以后commit之前是锁表的状态,其他事务无法对该表进行操作。
3.oracle什么时候需要commit
DML语言,比如update,delete,insert等修改表中数据的需要commit;
DDL语言,比如create,drop等改变表结构的,就不需要写commit(因为内部隐藏了commit);
DDL 数据定义语言:
create table 创建表
alter table 修改表
drop table 删除表
truncate table 删除表中所有行
create index 创建索引
drop index 删除索引
当执行DDL语句时,在每一条语句前后,oracle都将提交当前的事务。如果用户使用insert命令将记录插入到数据库后,执行了一条DDL语句(如create
table),此时来自insert命令的数据将被提交到数据库。当DDL语句执行完成时,DDL语句会被自动提交,不能回滚。
DML 数据操作语言:
insert 将记录插入到数据库
update 修改数据库的记录
delete 删除数据库的记录
当执行DML命令如果没有提交,将不会被其他会话看到。除非在DML命令之后执行了DDL命令或DCL命令,或用户退出会话,或终止实例,此时系统会自动
发出commit命令,使未提交的DML命令提交。
4.Oracle Form中commit的几种使用方法
针对form上面的数据变动进行commit,对于代码复中的类似update,insert语句也进行提交;
如果form上面的数据变动和代码中的数据变动有冲突,制最后以界面上的为准。
2.do_key('commit_form')
会首先寻找form下的triggers中的KEY-COMMIT这个trigger,并执行KEY-COMMIT中所写的代码。
如果bai没有KEY-COMMIT这个trigger,则会针对form和代码一起提du交zhi。
如果form上面的数据变dao动和代码中的数据变动有冲突,最后以界面上的为准。
3.commit对form和数据库进行提交.
如果form上面的数据变动和代码中的数据变动有冲突,最后以界面上的为准。
4.forms_ddl('commit');
5.sql语句中什么时候用commit
最简单的回答你一下 commit是提交的意思(oracle),当你写完一条sql语句后,点击执行,看到数据变化,或者修改,但是在数据中这些数据是没有变化的,如果你要修改数据库中的数据,必须在sql语句会面加一条语句commit。
数据库中的数据: username pwd admin 123456写一条sqlupdate usertable set pwd='123' where pwd='123456';执行结果 username pwd admin 123456如果这样写update usertable set pwd='123' where pwd='123456'; commit;执行结果 username pwd admin 123。
6.引用Oracle Form中如何使用COMMIT
?绻?峤徽?鰂orm用do_key_commit。代码:DECLARE l_where varchar2(2000) default '1=1';BEGINfnd_standard.set_who;
if :HEADERS.STATUS='NOT APPROVED'THENUPDATE expense_header_all SET status='APPROVED' WHERE HEADER_ID=:HEADERS.HEADER_ID;
IF (SQL%NOTFOUND) THEN
RAISE NO_DATA_FOUND;END IF;forms_ddl('COMMIT');
app_query.reset('HEADERS');
l_where:= l_where||' and HEADER_ID = ' || :HEADERS.HEADER_ID;
app_query.append ('HEADERS',l_where);
app_find.find('HEADERS');
app_query.reset('HEADERS');END IF;end;关于form中的commit,补充一下:
1.commit_form
针对form上面的数据变动进行commit,对于代码中的类似update,insert语句也进行提交;
如果form上面的数据变动和代码中的数据变动有冲突,最后以界面上的为准。
2.do_key('commit_form')
会首先寻找form下的triggers中的KEY-COMMIT这个trigger,并执行KEY-COMMIT中所写的代码。
如果没有KEY-COMMIT这个trigger,则会针对form和代码一起提交。
如果form上面的数据变动和代码中的数据变动有冲突,最后以界面上的为准。
3.commit对form和数据库进行提交.
如果form上面的数据变动和代码中的数据变动有冲突,最后以界面上的为准。
4.forms_ddl('commit');
只针对代码中的update,insert,delete语句进行提交,form上面的数据变动不提交. 5谁覆盖谁,要看语句执行的顺序,比如在Post-Forms-Commit中写UPDATE就会覆盖界面。
oracle怎么写循环
1. oracle sql怎么写循环语句
declare
sql_tem Varchar2(4000);
a number;
b number;
i number;
begin
a := 1;
for i in 1 .. 3 loop
b := a + 4;
sql_tem := 'insert into A2 (ID,NAME) (select ID,NAME from A1 WHERE ROWNUM between :1 and :2)';
EXECUTE IMMEDIATE sql_tem
USING a, b;
commit;
a := a + 5;
end loop;
end;
试试上面的代码看一下能不能满意你的要求先呗。
2. 哪位大侠知道怎么写oracle sql 循环语句
循环结构
简单循环【经常使用】:loop……end loop
语法格式:
loop
plsql语句;
[exit when 条件;]
end loop;
说明:exit when 条件,表示当条件成立时退出。
范例:求1~100的和。
declare
i number;
sum1 number;
begin
i:=1;
sum1:=0;
loop
exit when i>100;
sum1:=sum1+i;
i:=i+1;
end loop;
dbms_output.put_line(sum1);
end;
/
范例:向emp表中插入999条记录
declare
i number:=1;
begin
loop
exit when i>999;
insert into emp(empno,ename,deptno) values(i,'jack'||i,40);
dbms_output.put_line('第'||i||'记录已添加');
i:=i+1;
end loop;
end;
/
while循环:while loop……end loop
语法格式
while 条件 loop
plsql语句;
end loop;
例:使用while循环显示1~10
declare
i number;
begin
i:=1;
while i
3. oracle存储过程怎么写循环
Oracle中有三种循环(For、While、Loop):
1、loop循环:
create or replace procedure pro_test_loop is
i number;
begin
i:=0;
loop
i:=i+1;
dbms_output.put_line(i);
if i>5 then
exit;
end if;
end loop;
end pro_test_loop;
2、while循环:
create or replace procedure pro_test_loop is
i number;
begin
i:=0;
while i
4. 请教大神,oracle数据库循环语句怎么写
假设表中字段分别为:
student 中字段:class_id, student_name,score,pass(number类型)
class中字段:class_id,class_name
select c.class_name,count(*) total ,sum(pass) as pass_count,sum(pass)/count(*) as pass_ratio
from student s,class c
where s.class_id=c.class_id
group by c.class_name
5. SQL 语句简单的循环怎么写啊
**************
修改了一下:
**************
declare @month_tmp varchar(2);
declare @day_tmp varchar(2);
set @month_tmp = '1';
set @day_tmp = '1';
while(@month_tmp < '13')
begin
while(@day_tmp < '30')
begin
select * from table1 where month=@month_tmp and day=@day_tmp
set @day_tmp = @day_tmp + 1
end
set @month_tmp = @month_tmp + 1
set @day_tmp = 1
end
*********************************************************
select * from table1 where
month in('1','2','3','4','5','6','7','8','9','10','11','12'
and
day in('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30');
---
以上,希望对你有所帮助。
转载请注明出处育才学习网 » oracle电子邮件地址怎么写
育才学习网