`
newObject
  • 浏览: 23942 次
  • 性别: Icon_minigender_2
  • 来自: 济南
社区版块
存档分类
最新评论

关于插入的存储过程和函数

 
阅读更多
存储过程
create or replace procedure p_4s(
   p_type in varchar2,
   p_num in number,
   p_da in date,
   p_id in number,
   p_price in number
  )
is
begin
  insert into t_4s(type,num,da,id,price) values (p_type,p_num,p_da,p_id,p_price);
end p_4s;
执行过程
begin
  -- Call the procedure
  p_4s('',1,sysdate,3,1);
end;
select * from t_4s;
函数
create or replace function f_4s(
   p_type in varchar2,
   p_num in number,
   p_da in date,
   p_id in number,
   p_price in number
  )
return number
is
n number;
begin
  insert into t_4s(type,num,da,id,price) values (p_type,p_num,p_da,p_id,p_price);
  commit;
  select count(*) into n from t_4s;
  return n; 
end f_4s;
执行过程
declare
n number;
begin
  -- Call the procedure
  n:=f_4s('type',2,sysdate,2,3);
  dbms_output.put_line(n);
 
end;
注意:
(1)    如果函数没有参数,那么函数名后不应该要括号;
(2)    创建函数的时候end后面一定要记得写函数名  。

一、oracle本身没有boolean类型,就是说跟数据库相关的类型中不包括boolean,一般采用number(1)和char(1)来实现。
所 以”You   cannot   insert   the   values   TRUE and   FALSE   into   a   database   column.   Also,   you   cannot   select   or   fetch   column   values into   a   BOOLEAN   variable.“
plsql为了实现结构化编程,支持了boolean类型,所以可能会出现的问题是一个存储过程或者函数的返回参数是boolean型的,但在call这个procedure的时候,无法注册boolean类型的返回参数,执行时会抛出”参数类型不对“的exception,解决的方案就是把boolean的参数用别的类型代替。
二 如果是特定boolean类型情况下,Char(1)是比Number(1)更好的选择,因为前者所用的存储空间会比后者少,但这二者在查询时存储空间的节省会提供查效率,但是要注意的是用Char(1)的时候不能让这个字段可以为空,必须有缺省,否则查询效率会降低
三、PL/SQL 中有boolean类型,有null类型
PL/SQL中是有Boolean类型的,只能取2个值:true和false;
存储过程中的变量也支持boolean型;
但数据库中没有boolean类型。
四、存储过程中:
declare
v1 boolean;
begin
v1:=1>2;
if(v1)then
     dbms_output.put_line('true');
else
    dbms_output.put_line('false');
end if;
end;
打印:false
----------------------------------------
declare
v1 boolean;
begin
v1:=1>2;
dbms_output.put_line(v1);
end;
会报错。运行时得到错误信息:调用'PUT_LINE' 时参数个数或类型错误。这是因为在脚本中不能直接打印boolean类型的值。
五:
oracle 没有boolean,mysql用bit(1)而oracle可以用char(1) check(...(0,1))字段,
如:
create table a ( a char(1) check (a in(0,1)))
然后JDBC用getBoolean()可以返回正确的结果。

SQL SERVER存储过程
if object_id(N'p_test') is not null
drop proc p_test
go
create proc p_test(
@id int,
@username varchar(50)='0' output,
@password varchar(50)='0' output
)
as
begin
begin try
if @id = 3
begin
select @username=username,@password=password from t_user where id=@id
end
else
insert into t_user(username,password) values('123','123')
print('error')

print(@id);
end try
begin catch
print(error_number())
print(error_message())
end catch
end
go
执行过程
declare
@username varchar(50),
@password varchar(50)
exec p_test 2,@username output,@password output
print(@username+'||'+@password)
go

参考资料:http://www.cnblogs.com/hoojo/archive/2011/07/19/2110862.html
分享到:
评论

相关推荐

    存储过程和函数

    根据提供的文件信息,本文将详细...存储过程和函数是数据库管理中非常重要的概念,它们可以提高程序的复用性和效率,同时简化数据库的维护工作。通过了解和掌握这些基本知识,可以更有效地管理和开发数据库应用程序。

    Oracle存储过程和函数(最详细包含emp 表实例操作,边看边操作)

    1. **操作EMP表**:我们可以创建存储过程或函数来查询、插入、更新或删除`EMP`表的数据。例如,创建一个显示所有员工姓名的存储过程: ```sql CREATE OR REPLACE PROCEDURE display_employees IS CURSOR c_emp IS...

    sqlserver 存储过程 函数 常用知识点

    以下是关于SQL Server存储过程和函数的一些常用知识点: 1. **存储过程(Stored Procedures)**: - **定义**:存储过程是一组预编译的SQL语句,可以接受参数,执行特定任务,如数据查询、更新或插入等。 - **...

    存储过程-05.存储过程和函数结合使用

    在数据库管理领域,存储过程和函数是两种非常重要的数据库编程元素。它们在数据处理和业务逻辑实现中扮演着核心角色。本主题将深入探讨“存储过程-05.存储过程和函数结合使用”这一概念,旨在揭示它们如何协同工作以...

    oracle数据库 存储过程和函数的使用

    根据给定文件的信息,我们可以详细地探讨Oracle数据库中存储过程和函数的相关知识点。 ### 存储过程的意义 存储过程是一种数据库对象,它是由SQL语句和流程控制语句组成的预编译模块,存储在数据库服务器上。存储...

    存储过程(循环插入数据)

    总的来说,使用存储过程和FOR LOOP循环在Oracle数据库中批量插入数据是一种高效的方法。然而,考虑到不同工具的兼容性,选择合适的执行环境和调整代码结构都是保证程序顺利运行的关键。对于开发和调试过程,推荐使用...

    ORACLE存储过程,函数,包,游标

    在《ORACLE存储过程,函数,包,游标》这个文本文件中,可能包含了关于如何定义、调用和管理这些对象的示例代码和实践指导。通过阅读和理解这个文件,开发者能够深入了解Oracle数据库的动态编程能力,提升其在数据库...

    MySQL数据库函数,触发器,存储过程

    在数据库管理中,函数、触发器和存储过程是三个重要的概念,它们极大地增强了数据处理的灵活性和效率。 **一、MySQL数据库函数** 函数是预定义的代码块,接受一个或多个参数,并返回一个值。MySQL提供了丰富的内置...

    sqlserver 存储过程,函数,视图实例

    在SQL Server数据库管理系统中,存储过程、函数和视图是三个重要的数据库对象,它们在数据库设计和数据操作中起着核心作用。以下是对这些概念的详细说明: **存储过程(Stored Procedure)** 存储过程是一组预编译...

    实验9 存储过程的创建和使用

    存储过程是一组预先编写的SQL语句,它允许用户像调用函数一样重复执行,提高了数据库操作的效率和安全性。 首先,理解存储过程的分类至关重要。存储过程分为系统存储过程、用户自定义存储过程和扩展存储过程。系统...

    Oracle学习开发常用的SQL和存储过程学习(内含SQL面试题目和存储过程,函数面试题目).zip

    在Oracle中,存储过程还可以包含PL/SQL块,这是一种结合了SQL和过程化编程的语言。资料中的存储过程部分将涵盖创建、调用、修改和删除存储过程的方法,以及如何处理异常和控制流程。 函数是存储过程的一种特殊形式...

    mysql存储例程、存储过程、存储函数进阶学习

    MySQL存储例程,包括存储过程和存储函数,是数据库管理中的重要组成部分,它们极大地提高了数据库应用的效率和灵活性。在进阶学习中,我们需要深入理解这些概念及其在实际开发中的应用。 1. **存储过程**:存储过程...

    触发器、存储过程和函数三者有何区别四.pdf

    【触发器、存储过程和函数的区别】 触发器、存储过程和函数都是数据库管理系统中的重要组件,它们各自在特定场景下发挥着不同的作用。 1. **触发器(Triggers)** - 触发器是一种特殊的存储过程,它会在特定的...

    数据库实验报告-存储过程、触发器

    通过这些实验步骤,学生能够深入理解存储过程和触发器的工作原理及其在实际数据库应用中的作用。同时,这些操作也展示了如何在数据库管理系统中编写和管理这些数据库对象,有助于提升数据库设计和管理能力。

    oracle存储过程、函数和程序包.pptx

    Oracle存储过程、函数和程序包 Oracle存储过程、函数和程序包是数据库管理系统中的一种机制,允许开发者在数据库服务器上创建和执行自定义的代码,以提高数据库的性能和安全性。本文将对Oracle存储过程、函数和程序...

    PLSQL程序设计-存储过程函数触发器

    **命名块**包括存储过程、函数、包和触发器等,这些块都有自己的名称并且可以被存储在数据库中供其他程序调用。其中,**存储过程**和**函数**是最常见的两种命名块类型。 #### 过程与函数 **子程序**是PL/SQL中的...

    实 验 五 存储过程的建立与使用

    数据库存储过程和触发器的建立与使用 在数据库管理系统中,存储过程和触发器是两个重要的概念,它们可以帮助我们更好地管理和维护数据库。在本节中,我们将详细介绍存储过程和触发器的概念、作用、创建和使用方法。...

    oracle存储过程函数和程序包.ppt

    Oracle 存储过程函数和程序包 Oracle 存储过程函数和程序包是 Oracle 数据库中的一种核心组件,用于实现复杂的业务逻辑和数据处理。以下是 Oracle 存储过程函数和程序包的知识点总结: 一、游标的概念和类型 游标...

    oracle函数大全及存储过程语法

    Oracle数据库是世界上最广泛使用的数据库系统之一,其强大的功能和灵活性主要体现在它的SQL扩展以及丰富的函数和存储过程上。本文将详细介绍Oracle中的函数和存储过程的语法,帮助你深入理解和运用这些核心概念。 ...

Global site tag (gtag.js) - Google Analytics