sql: Oracle 11g create procedure

CREATE OR REPLACE PROCEDURE proc_Insert_BookKindList
(
temTypeName nvarchar2,
temParent int
)
AS
ncount number;
begin
--SELECT COUNT (*) INTO ncount FROM BookKindList fm1 where  EXISTS (SELECT BookKindName from BookKindList fm2 where  fm2.BookKindName=temTypeName);--判斷是否存
SELECT count(*) INTO ncount FROM BookKindList where BookKindName=temTypeName;
if ncount<=0 then
begin
INSERT INTO BookKindList (BookKindName,BookKindParent) VALUES(temTypeName,temParent);
commit;
end;
else
begin
  SELECT BookKindID INTO ncount FROM BookKindList where BookKindName=temTypeName;
  dbms_output.put_line('存在相同的记录,添加不成功!'||ncount);
end;
end if;
Exception
    When others then
      dbms_output.put_line('存在问题,添加不成功!'||ncount);
       Rollback;
end proc_Insert_BookKindList;

--测试 oracle 11g 涂聚文 20150526
exec proc_Insert_BookKindList ('油彩画',3);

drop PROCEDURE proc_Insert_BookKindOut;

CREATE OR REPLACE PROCEDURE procInsertBookKindOut --添加返回ID
(
temTypeName nvarchar2,
temParent number,
temId out number
)
AS
ncount number;
reid number;
begin
--SELECT COUNT (*) INTO ncount FROM BookKindList fm1 where  EXISTS (SELECT BookKindName from BookKindList fm2 where  fm2.BookKindName=temTypeName);--判斷是否存
SELECT count(*) INTO ncount FROM BookKindList where BookKindName=temTypeName;
if ncount<=0 then
begin
INSERT INTO BookKindList (BookKindID,BookKindName,BookKindParent) VALUES(BookKindList_SEQ.nextval,temTypeName,temParent);
select BookKindList_SEQ.currval into reid from dual;
temId:=reid;
dbms_output.put_line('添加成功!'||temId);
commit;
end;
else
begin
  SELECT BookKindID INTO ncount FROM BookKindList where BookKindName=temTypeName;
  dbms_output.put_line('存在相同的记录,添加不成功!'||ncount);
  temId:=0;
end;
end if;
Exception
    When others then
    begin
      dbms_output.put_line('存在问题,添加不成功!'||ncount);
      temId:=0;
       Rollback;
    end;
end procInsertBookKindOut;

--测试 oracle 11g 涂聚文 20150526
declare
mid  number:=0;
nam  nvarchar2(100):='黑白画';
par  number:=3;
begin
--proc_Insert_BookKindOut(nam in nvarchar2,par in int,mid in out int);
procInsertBookKindOut(nam,par ,mid);
if mid>0 then
dbms_output.put_line('添加成功!输出参数:'||mid);
else
dbms_output.put_line('存在相同的记录,添加不成功!输出参数:'||mid);
end if;
end;
时间: 2024-10-28 08:40:52

sql: Oracle 11g create procedure的相关文章

sql: Oracle 11g create table, function,trigger, sequence

--书藉位置Place目录 drop table BookPlaceList; create table BookPlaceList ( BookPlaceID INT PRIMARY KEY, --NUMBER BookPlaceName nvarchar2(500) not null, BookPlaceCode varchar(100) null, --位置編碼 BookPlaceParent INT null --BookPlaceKindId nvarchar(500) null --

Oracle 11g R2 手动建库(create database manually)

      手动创建数据库是DBA们经常遇到的情形,因为有些情况下无法提供GUI环境.实际上手动建库,只要设置好了相关的参数或值,也是非常方便的.本文基于Oracle 11g首先描述了手动建库的大致步骤并给出示例演示.最后提供了一个shell脚本直接执行来实现手动建库.在执行前该脚本可根据你的路径进行适当的修改.   一.手动建库大致步骤    设置环境变量.bash_profile    创建参数文件(位置:$ORACLE_HOME/dbs)    创建目录结构    执行建库脚本   二.手

In Oracle 11g, how to change the order of the results of a sql without “order by”?(转)

oracle 11g 当sql语句中不加order by的时候,好像是按rowid的顺序返回结果的.我也看过一些相关的文档,oracle的官方意思就是不加order by,就不保证输出的顺序. 那么,问题来了:如果现在我select XXX,一组结果出来,顺序是.......A....B.....那么接下来我做什么操作,再做同样一句select,怎么才能让结果变成....B...A.....Notice1: 操作中请勿修改表的主键,不要用DDL,只用select * from A;得到结果Not

Oracle 11g RAC安装时的错误提示:Failed to create or upgrade OLR

对于Oracle 11g RAC 的安装,与Oracle 10g(clusterware)类似,grid 安装完毕后需要执行orainstroot.sh和root.sh,如果是AMD芯片,Oracle说不认识啊,那就要恭喜一下你又多了一次patch的亲密接触,这个错误提示是Failed to create or upgrade OLR.客官,中招了?接着往下看... 1.安装时的环境 操作系统(Oracle linux 5.5 32bit) [root@node1 ~]# cat /etc/is

Oracle 11g简化版通过导入SQL创建用户

环境:Oracle 11g R2 + SQLPlus 问题:Oracle导入SQL 解决: Win +Run------- >Cmd------->输入以下命令: --语法:sqlplus 用户名/密码 @sql文件 sqlplus system/manager @H:\Oracle\product\11.2.0\dbhome_1\RDBMS\ADMIN\scott.sql 说明:H:\Oracle\product\11.2.0\dbhome_1\RDBMS\ADMIN下的scott.sql文

oracle数据库-oracle 11g ORA-00445:每个月数据库都会死,pl/sql登录不上

问题描述 oracle 11g ORA-00445:每个月数据库都会死,pl/sql登录不上 每个月数据库都会无缘无故的死掉,重启数据库又正常了,下面是alert_orcl.log里面的日志,window服务器内存8G ,oracle版本11gR2,这个是什么原因导致的呢 Tue Oct 28 20:18:25 2014 Errors in file d:oraclediagrdbmsorclorcltraceorcl_cjq0_2628.trc (incident=65106): ORA-00

使用instantclient_11_2 和PL/SQL Developer工具包连接oracle 11g远程数据库(转)

1,先到Oracle网站下载Instant Client : http://www.oracle.com/technology/global/cn/software/tech/oci/instantclient/index.html 根据你的操作系统选择不同的Instant Client版本 下载回是一个压缩文件,解压之后的文件夹叫:D:/instantclient_11_2.放在你喜欢的目录即可.例如:D:/instantclient_11_2 2.在D:/instantclient_11_2

oracle 11g数据库中SPA使用例子介绍

oracle 11g推出了新特性SPA(SQL performance Analyze)现在已经被广泛应用到升级和迁移的场景中,当然比如一些其他的场景也可以考虑使用,比如(优化器参数修改.IO子系统变更等),这种功能可向DBA 提供有关SQL语句性能的详细信息,例如,执行前后的统计信息,提高或降低性能的语句,主要用于衡量环境变化后SQL执行性能是否出现衰变等. SPA的主要实施步骤如下: 1 在源环境捕捉SQL负载,生成SQLSET exec dbms_sqltune.create_sqlset

centos install oracle 11g rpm Express edition

Install Oracle 11g Express (XE) on CentOS This post will cover basic installation and configuration of Oracle 11g Express Edition (XE) on CentOS. We will also take a quick look at configuring Application Express (APEX) for 11g XE. Basic installation