精华内容
下载资源
问答
  • oracle存储过程参数类型
    2021-05-08 00:48:04

    create or replace procedure proc_emp(eno in number,sal out number)--带输入输出参数的存储过程 as emp_records emp%rowtype;--声明一个记录类型用来存储结果集 begin select * into emp_records from emp where empno=eno;--把查询结果赋值个记录类型 sa

    create or replace procedure proc_emp(eno in number,sal out number)--带输入输出参数的存储过程

    as

    emp_records emp%rowtype;--声明一个记录类型用来存储结果集

    begin

    select * into emp_records from emp where empno=eno;--把查询结果赋值个记录类型

    sal:=emp_records.sal;--为输出参数赋值

    -- dbms_output.put_line(emp_records.ename||emp_records.sal);

    end;

    --执行存储过程

    declare

    emp_no emp.empno%type;--声明一个员工编号的变量

    emp_sal emp.sal%type;--声明一个员工薪水的变量

    begin

    emp_no:='&empno';--从控制太输入参数

    proc_emp(emp_no,emp_sal);--调用存储过程并传入参数

    dbms_output.put_line(emp_sal);--显示输出参数

    end;

    总结:or代表是可选项,注意参数类型不要声明长度大小。记录类型的声明用rowtype声明。

    如果用输出参数的时候要给输出参数赋值,否则将看不到结果。

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!

    更多相关内容
  • Oracle存储过程及调用

    2020-12-16 01:18:05
    Oracle存储过程语法 Oracle的存储过程语法如下: create procedure 存储过程名称(随便取) is 在这里可以定义常量、变量、游标、复杂数据类型这里可以定义变量、常量 begin 执行部分 end; (2)带参数的存储...
  • C#调用Oracle自定义类型存储过程Oracle存储入参为type类型,对于不熟悉Oracle朋友,可以参考来调用。实现思路和正常调MSSQL一样,先建立连接,再定义一个IOracleCustomType的类,然后Oracle.DataAccess.dll的...
  • in、out、inout 传入指:直接向参数传入具体的值(in) 通过变量赋值(in,in out); 传出指:通过计算、程序块中赋值在传出一个新的结果值 out、 in out;

    今天有用到存储过程的参数,晚上回来简单梳理辨析下三种类型,大家可以留言多多讨论哈~

    书面定义其他博主已经说的很清晰,概念很简单,我就不写了,废话不多说,直接看实例

    参数类型:

    下面举例讲解何为传入值,传出值。

    调用后结果:

     

     其中,v_x,v_m均为in参数形式,说明in可直接传入实际的值,也可传入一个变量,调用时再赋值;

    而p_n没有值,即不能传入值!


    传出值:

     

     传出值即指,参数在程序编辑块中,是否可以被重新定义,out、in out 类型的p_y、p_n均被重新赋值,而in类型的p_x报错;


     总结:

    传入指:直接向参数传入具体的值(in)
                   通过变量赋值(in,in out);
    传出指:通过计算、程序块中赋值在传出一个新的结果值 out  in out;

    大家可以留言多多讨论哈~

     

    展开全文
  • 怎么利用MyBatis传List类型参数到数据库存储过程中实现批量插入数据?接下来通过本文给大家介绍Mybatis传list参数调用oracle存储过程,需要的朋友可以参考下
  • 有俩种方法: 一种是声明系统游标,一种是声明自定义游标,然后后面操作一样,参数类型为 in out 或out (1)声明个人系统游标.(推荐) 代码如下: create or replace p_temp_procedure ( cur_arg out sys_refcursor;...
  • c# ado调用oracle存储过程报错(参数类型不对、顺序不对等等问题),只需要加上BindByName=true即可,使用微软自带的System.Data.OracleClient.dll,应该是没有问题(没亲测)。 准备oracle存储过程 创建一个简单的存储...

    介绍:Oracle.ManagedDataAccess.dll

    c# ado调用oracle存储过程报错(参数类型不对、顺序不对等等问题),只需要加上BindByName=true即可,使用微软自带的System.Data.OracleClient.dll,应该是没有问题(没亲测)。

    准备oracle存储过程

    创建一个简单的存储过程,向sys_user表中插入一条数据

    create or replace procedure proTest
    (
    id in varchar2,
    spassword in varchar2,
    smobilephone in varchar2,
    semail in varchar2,
    returnValue out varchar2
    )
    as
    begin
      begin
      insert into sys_user(guid,password,mobilephone,createtime, email) values(id,spassword,smobilephone,(SELECT SYSDATE FROM  dual),semail);
    returnValue:='成功';
    exception
      WHEN OTHERS THEN
        returnValue:='失败';
        end;
    end;
    

     

    c#操作调用存储过程:

    1.首先我将BindByName设置为默认值false,参数顺序按照存储过程的入参顺序(id,spassword,smobilephone,semail,returnValue)来传参,可以成功

    using (IDbConnection db = DapperFactory.GetConnection(Enums.MyDbType.Oracle, @"User ID=czj;Password=123456;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))"))
                    {
                        db.Open();
                        var command=(OracleCommand)db.CreateCommand();
    
                        command.BindByName = false;//根据参数名绑定,默认为false
    
                        string returnValue = "";
                        List<OracleParameter> paraList = new List<OracleParameter>
                        {
                           new OracleParameter("id", OracleDbType.Varchar2, Guid.NewGuid().ToString(), ParameterDirection.Input),
    
                            new OracleParameter("spassword", OracleDbType.Varchar2, "123456", ParameterDirection.Input),
    
                             new OracleParameter("smobilephone", OracleDbType.Varchar2, "15298506403", ParameterDirection.Input),
    
                             new OracleParameter("semail", OracleDbType.Varchar2, "15298506403@163.com", ParameterDirection.Input),
    
                             new OracleParameter("returnValue", OracleDbType.Varchar2, 1000,returnValue,ParameterDirection.Output)
                        };
    
                        command.CommandText = "proTest1";
                        command.CommandType = CommandType.StoredProcedure;
                        command.Parameters.AddRange(paraList.ToArray());
    
                        var effectRows=command.ExecuteScalar();
    
    }

    2.现在我改变入参顺序,改成(spassword,id,smobilephone,semail,returnValue),发现不会成功,这时BindByName设置为true便可

     List<OracleParameter> paraList = new List<OracleParameter>
                        {
                            new OracleParameter("spassword", OracleDbType.Varchar2, "123456", ParameterDirection.Input),
    
                             new OracleParameter("id", OracleDbType.Varchar2, Guid.NewGuid().ToString(), ParameterDirection.Input),
    
                             new OracleParameter("smobilephone", OracleDbType.Varchar2, "15298506403", ParameterDirection.Input),
    
                             new OracleParameter("semail", OracleDbType.Varchar2, "15298506403@163.com", ParameterDirection.Input),
    
                             new OracleParameter("returnValue", OracleDbType.Varchar2, 1000,returnValue,ParameterDirection.Output)
                        };

     

    展开全文
  •  create[or replace] procedure 存储过程名称(参数名 [in]/out 数据类型)  is/as  begin –逻辑表达式  end [存储过程名称]; –定义存储过程计算年薪,并答应输出  create or replace procedure proc_...
  • ORACLE存储过程RECORD数据类型的使用

    千次阅读 2020-11-18 19:37:32
    RECORD记录数据类型是将多个基本数据类型组合成一个整体,作为一个复合数据类型使用

    RECORD记录数据类型,是将多个基本数据类型变量组合成一个整体,作为一个复合数据类型使用

    • RECORD定义及使用
    create or replace procedure zhzitywp.test is
    --记录数据类型定义
    type stu_record is record(
      id    integer      not null,
      name  varchar2(20) not null,
      score number(20,2) not null := 0
    );
    --声明记录数据类型变量
    stu_record_val stu_record;
    begin
      select id,name,score into stu_record_val from user where rowid = 1;
      dbms_output.put_line(stu_record_val.id);
      dbms_output.put_line(stu_record_val.name);
      dbms_output.put_line(stu_record_val.score);
    end test;
    
    

    需要注意的是,RECORD记录数据类型,仅能接收单行多列的查询结果,如果查询结果返回是多行就需要配合数组使用

    • RECORD搭配数组使用
    create or replace procedure zhzitywp.test is
    --记录数据类型定义
    type stu_record is record(
      id    integer      not null,
      name  varchar2(20) not null,
      score number(20,2) not null := 0
    );
    --记录数据类型的数组定义
    type stu_record_arr is table of stu_record;
    --声明数组变量
    stu_record_arr_val stu_record_arr ;
    begin
      --查询结果是多行多字段,此处不能使用select into,而要用select bulk collect into
      select id,name,score bulk collect into stu_record_arr_val from user;
      --遍历查询结果,每行都是一个RECORD记录数据类型
      for i in 1 .. stu_record_arr_val.count loop
        begin
          dbms_output.put_line(stu_record_arr_val (i).id);
          dbms_output.put_line(stu_record_arr_val (i).name);
          dbms_output.put_line(stu_record_arr_val (i).score);
        end;
      end loop;
    end test;

    上面用到的bulk collect,可以减少loop开销,将查询结果一次性加载到collections中,适用于select into、fetch into、returning into等语句,且所有的into变量必须是collections

    展开全文
  • Oracle存储过程_参数

    千次阅读 2019-05-27 00:06:36
    --定义打印的存储过程 CREATE OR REPLACE PROCEDURE println (str varchar) AS BEGIN dbms_output.put_line(string); --输出语句 END; --定义测试in模式的存储过程 CREATE OR REPLACE P...
  • oracle 存储过程clob参数

    千次阅读 2020-12-23 15:32:26
    .Net处理Oracle中Clob类型字段总结最近在做项目中用到Clob这个字段,Clob是存储无限长字符的Oracle字段,用的时候网上找资料找了好久,内容不是很多,大部分都不能用,当然也有可以用的,测试了不同版本,整理了一下...
  • Oracle存储过程参数理解

    千次阅读 2018-04-28 15:39:36
    一、过程 (存储过程) 过程是一个能执行某个特定操作的子程序。使用CREATE OR REPLACE创建或者替换保存在数据库中的一个子程序。示例1:声明存储过程,该过程返回dept表行数DECLARE PROCEDURE getDeptCount AS ...
  • oracle存储过程接收自定义数组类型参数 2016年10月29日 09:53:23 ntuloser 阅读数:1092 标签: oraclejava存储mybatis 更多 个人分类: 数据库 版权声明:本文为博主原创文章,未经博主允许不得转载。 ...
  • 1.如果是命令窗口就用exec 存储过程名:1EXECprocedure;--procedure是存储过程名2.如果是 SQL窗口就用 begin 存储过程名 end;123beginprocedure;--procedure是存储过程名end;3.如果是程序中调用就用 call 存储过程名...
  • ORACLE存储过程

    万次阅读 多人点赞 2018-11-02 18:14:48
    oracle存储过程 目录 一.什么是存储过程 二.为什么要写存储过程 三.存储过程基础 1.存储过程结构 2.存储过程语法 3.pl/sql处理存储过程 四.存储过程进阶 1.BUIK COLLECT 2.FORALL 3.pl/sql调试存储过程 ...
  • (1)对于表A和表B两个表结构完全相同的话〔字段个数,相应字段的类型等等〕,可以使用 insert INTO B select * FROM A; insert INTO B(field1,field2,field3) select A.field1,A.field2,A.field3 from A; (2) ...
  • 场景:有一个存储过程p_test 带有多个输入参数code、name、numberp_test(code IN VARCHAR2,nameIN VARCHAR2,number IN VARCHAR2,resultList OUT sys_refcursor)但是业务上要求这三个参数都允许为空,也就是都不是...
  • 存储过程没有返回值,存储函数有返回值(return语句,要有返回值的类型)。 区别:存储函数可以有返回值,而存储过程没有返回值。 存储过程的out参数也可以实现返回值,所以存储过程可以替代存储函数。(存储函数是...
  • 语法:CREATE [OR REPLACE] PROCEDURE procedure_name(arg1 [mode...mode用于指定输入输出参数:IN为输入参数,OUT为输出参数,当为输入参数时可以省去IN,OUT不能省去。如果没有输入输出参数,可以省去(arg1 [mode1]...
  • 我知道Oracle没有用于参数的布尔类型,并且当前正在接受NUMBER类型,该类型的True / False值将为1/0(而不是'Y'/'N'CHAR(1)) 方法)。我不是一个非常高级的Oracle程序员,但是在做完一些挖掘和阅读一些ASKTOM帖子之后...
  • 准备:环境:pl/sql+oracle9i+vs2008创建表test:create table TEST(ID NUMBER,//编号NAME VARCHAR2(10),//姓名SEX VARCHAR2(2),//性别AGE NUMBER,//年龄...执行不带参数Oracle存储过程:首先编写一个不带参数的or...
  • 使用java代码调用oracle存储过程,本例使用JdbcTemplate模板类操作. 功能: 方便后续查阅. 1.JdbcTemplate调用存储过程(Procedure)不带返回值 1.1存储过程 CREATE OR REPLACE PROCEDURE PRO_QUERY_INFO_ARGS4...
  • 存储过程中使用date日期类型参数,需要定义日期类型date的变量重新赋值一次,赋值的过程貌似会做一次转换,之后才能正常使用,不然使用这个日期查询结果不准确,经常会得到无效的结果。 CREATE OR REPLACE ...
  • 1、in:输入类型,即由应用程序将数据传入oracle存储过程中;这种参数在存储过程中是只读参数,在存储过程中无法对该类型参数进行修改; 2、out:输出参数,是在存储过程中对该值进行赋值,在程序中获取值。 3、in ...
  • 在使用oracle进行批量插入的时,如果数据量较小可以使用install all的语法进行批量插入。... 使用存储过程批量插入很显然要接收一个数组当参数,而且这个数组里的元素类型应该和java里自定义的数据模型对应。
  • 今天刚接触了oracle存储过程中的参数,对于out与in out 这两种形式的参数类型,我比较困惑。在此尝试去理清楚一下。 在测试的过程中,我发现是自己想复杂了。 proc的参数有三种形式,in / out / in out 。(1)in ...
  •   上一篇的链接是 oracle存储过程----异常的写法介绍   有这样的需求,比如共有表B1-B17,现在要求传入年度、行政区划,查询出所有符合条件的B1-B17的记录,(当然,仅查询这些表中共同有的字段),因为这算是跨...
  • Oracle存储过程参数理解 (2010-11-12 11:23:34)  转自:http://blog.sina.com.cn/s/blog_45daee4a0100n9ar.html 一、过程 (存储过程)  过程是一个能执行某个特定操作的子程序。使用CREATE OR REPLACE...
  • — 创建存储过程语法,存储过程可以接收的参数类型有两类: — in 输入类型、out 输出类型 CREATE OR REPLACE PROCEDURE 过程名(参数列表) AS PLSQL子程序体 接下来看几个常用的例子 — 创建无参的...
  • 我使用的工具是navicat declare ... --输入参数 V_replay clob; --输出参数 BEGIN DBMS_OUTPUT.ENABLE(buffer_size =&amp;gt; null) ; --设置缓存大小 V_questionid := '2079439a1d0a428...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 125,735
精华内容 50,294
关键字:

oracle存储过程参数类型