精华内容
下载资源
问答
  • 创建带输出参数的存储过程 语法: create proc 存储过程名 ... 1 --创建带输入输出参数的存储过程 2 /* 3 题目要求 4 向母婴用品这个类添加一种商品,要求成功后把商品的编号输出 5 */ 6 7 ...

    创建带输出参数的存储过程

    语法:

    create proc 存储过程名

      @参数1 数据类型=默认值 output,

      @参数2 数据类型=默认值 output

    as 

      sql语句

    go

     

    例子:

     1 --创建带输入输出参数的存储过程
     2 /*
     3 题目要求
     4 向母婴用品这个类添加一种商品,要求成功后把商品的编号输出
     5 */
     6 
     7 use E_Market
     8 go
     9 
    10 if exists(select * from sysobjects where name='usp_InsertCommodity')
    11 drop proc usp_InsertCommodity
    12 go
    13 create proc usp_InsertCommodity
    14     @SortName varchar(50),  --类别名称
    15     @CommodityName varchar(100),  --商品名称
    16     @inprice money,   --进货价
    17     @outprice money,  --销售价
    18     @Amount int,   --库存liang
    19     @CommodityId int output   --商品编号,输出参数
    20 as
    21     --根据输入的类别名称查询类别编号
    22     declare @SortId int
    23     select @SortId=SortId from CommoditySort where SortName=@SortName
    24     --判断类别名称是否正确,
    25     if @SortId is null
    26         begin
    27             print '对不起,输入的类别不存在!'
    28             return  --后面的代码无条件,退出了创建的存储过程
    29         end
    30     --向商品信息表插入数据
    31     insert into CommodityInfo(SortId,CommodityName,InPrice,OutPrice,Amount)
    32     values(@SortId,@CommodityName,@inprice,@outprice,@Amount)
    33     --判断错误号是否大于0如果大于0说明插入有误
    34     if @@ERROR >0
    35         begin
    36             print '插入信息失败!'
    37             return
    38         end
    39     set @CommodityId=@@IDENTITY
    40 go
    41 
    42 --使用带输入输出参数的存储过程
    43 --1)声明变量来调用(隐式调用,要求参数的顺序与存储过程参数的定义的顺序相同)
    44 declare @sortName varchar(50), @commodityName varchar(100),
    45         @inprice money,@outprice money, @amount int, @commodityId int
    46 select @sortName='母婴用品',@commodityName='星飞帆1段', @inprice=100, @outprice=245,@amount=1000
    47 exec usp_InsertCommodity @sortName,@commodityName,@inprice,@outprice,@amount,@commodityId output
    48 print'添加商品成功,商品编号为:' + convert(varchar(5), @commodityId)
    49 --检测插入的信息
    50 select * from CommodityInfo

     

    转载于:https://www.cnblogs.com/zhangxudong-cnblogs/p/10946058.html

    展开全文
  • Oracle带输入输出参数的存储过程 (一)使用输入参数 需求:在emp_copy中添加一条记录,empno为已有empno的最大值+1,ename不能为空且长度必须大于0,deptno为60。 创建存储过程...
    Oracle带输入输出参数的存储过程

    (一)使用输入参数
    需求:在emp_copy中添加一条记录,empno为已有empno的最大值+1,ename不能为空且长度必须大于0,deptno为60。
    创建存储过程:
    create or replace procedure insert_emp(emp_name in varchar2, dept_no in number) as
    begin
      declare max_empno number;
      begin
        if(emp_name is null or length(emp_name) = 0) then
          return;
        end if;

        if(dept_no != 60) then
          return;
        end if;

        select max(empno) into max_empno from emp_copy;
        insert into emp_copy(empno, ename, deptno) values(max_empno + 1, emp_name, dept_no);
      end;
    end insert_emp;
    /

    Procedure created.

    调用存储过程并验证:
    (1)
    SQL>execute insert_emp('Li Si', 60);
    PL/SQL procedure successfully completed.

    SQL>
    col empno format 99999;
    col ename format a15;
    col deptno format 99999;
    select empno, ename, deptno from emp_copy where deptno = 60;

     EMPNO ENAME           DEPTNO
    ------ --------------- ------
      7981 Li Si           60

    (2)
    SQL> execute insert_emp('', 6);
    PL/SQL procedure successfully completed.

    SQL> select empno, ename, deptno from emp_copy where deptno = 6;

    SQL>

    (二)使用输出参数
    需求:在上个需求的基础上,要分别统计表emp_copy插入数据前后的记录数。
    创建存储过程:
    create or replace procedure insert_emp(emp_name in varchar2, dept_no in number, original_count out number, current_count out number) as
    begin
      declare max_empno number;
      begin
        if(emp_name is null or length(emp_name) = 0) then
          return;
        end if;

        if(dept_no != 60) then
          return;
        end if;

        select count(1) into original_count from emp_copy;
        select max(empno) into max_empno from emp_copy;
        insert into emp_copy(empno, ename, deptno) values(max_empno + 1, emp_name, dept_no);
        select count(1) into current_count from emp_copy;
      end;
    end insert_emp;
    /

    Procedure created.

    调用存储过程:
    declare count1 number;
            count2 number;
    begin
      insert_emp('Wang Wu', 60, count1, count2);
      dbms_output.put_line('Original count of table emp_copy is ' || count1);
      dbms_output.put_line('Current count of table emp_copy is ' || count2);
    end;
    /

    Original count of table emp_copy is 15
    Current count of table emp_copy is 16

    PL/SQL procedure successfully completed.


    (三)使用输入输出参数
    in out参数综合了上述两种参数类型,既向过程体传值,也被赋值而传到过程体外。in out参数既可以用作输入也可以用作输出。
    需求:实现两数交换。
    创建存储过程:
    create or replace procedure swap(value1 in out number, value2 in out number) as
    begin
      value1 := value1 + value2;
      value2 := value1 - value2;
      value1 := value1 - value2;
    end swap;
    /

    Procedure created.

    调用存储过程:
    declare a number := 22;
            b number := 33;
    begin
      dbms_output.put_line('Before swap: a = ' || a || ', b = ' || b);
      swap(a, b);
      dbms_output.put_line('After swap: a = ' || a || ', b = ' || b);
    end;
    /

    Before swap: a = 22, b = 33
    After swap: a = 33, b = 22

    PL/SQL procedure successfully completed.






    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29485627/viewspace-1248721/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/29485627/viewspace-1248721/

    展开全文
  • 输入输出参数的存储过程

    千次阅读 2015-08-09 00:04:03
    创建带输入输出参数的存储过程: drop procedure if exists proc_user_inout; delimiter // create procedure proc_user_inout(inout inout_param int) begin select count(*) into inout_param from user where ...

    创建带有输入输出参数的存储过程:

    drop procedure if exists proc_user_inout;
    delimiter //
    create procedure proc_user_inout(inout inout_param int)
    begin
    select count(*) into inout_param from user where userid > inout_param ;
    end //
    delimiter ;

    以上代码即在当前数据库中创建了带有输入输出参数的存储过程,名字为proc_user_inout,可调用此存储过程查询 userid >2 的记录数。

    在命令行中调用此存储过程代码:

    set @result=2;
    call proc_user_inout(@result);
    select @result;
    注意:以上的@result不能变


    在类中写如下关键代码调用此存储过程:

    public static void main(String[] args) {
    		Connection con = null;
    		CallableStatement cs = null;
    		try {
    			con = getConnection();
    			String sql = "{call proc_user_inout(?)}";
    			cs = con.prepareCall(sql);
    			cs.registerOutParameter(1, Types.VARCHAR);
    			cs.setInt(1, 2);
    			cs.execute();
    			int number = cs.getInt(1);
    			System.out.println(number);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}

    以上两种调用均可得到 userid >2 的记录数。

    展开全文
  • (一)使用输入参数需求:在emp_copy中添加一条记录,empno为已有...创建存储过程:create or replace procedure insert_emp(emp_name in varchar2, dept_no in number) as begin declare max_empno number; ...
  • mysql的存储过程会有三种参数,此文章只讨论in和out参数。本文章已创建用户为例子,因为创建用户需要用到左右层级关系。所以需要使用存储过程,为了方便演示,本文只以创建简单的用户记录为主,不研究为什么使用。 ...
  • 创建一个带参数的存储过程,名字为“teacherproc”,当输入任意一个“老师名字”时,该存储过程输出该系所有教师的编号,姓名,性别
  • 利用mysql客户端输入创建一个存储过程 create procedure getAgeByName(in n varchar(20), out pw varchar(20)) begin declare a varchar(20); select passwd into a from stutbl where name=n; set pw=a; end; 二...
  • 一.Oracle创建表及存储过程 1.创建表T_MONITOR_DEVICE  创建表结构   2.创建存储过程 create or replace procedure ProcTestNew(v_monitordeviceid in number,curdata out sys_refcursor ) As begin ...
  • Navicat for MySQL如何创建带参数的存储过程?要通过界面创建,输入参数和输出参数应该怎样书写?
  • Oracle创建一个带输入参数的存储过程,打印拼接的字符和变量 create or replace procedure test09( v_name varchar2 , v_age int ...
  • SQL中调用存储过程语句:call procedure_name();注:调用时”()”是不可少的,无论是有参数还是无参数....表示输入参数,创建存储过程时用in表示输入参数3、仅有输出参数的存储过程:{call proce...
  • 使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转义序列。不参数的 call 转义序列的语法如下所示:{call procedure-name}作为实例,在 SQL Server 2005 AdventureWorks 示例数据库中创建以下...
  • mysql 有无参数的存储过程

    千次阅读 2016-11-10 20:09:05
    SQL中调用存储过程语句:call procedure_name();注:调用时”()”是不可少的,无论是有参数还是无参数.定义对数据库存储过程的调用时 1、无参数存储过程:{call procedure_name} ...3、仅有输出参数的存储过程:{cal
  • Java调用SQL存储过程 输入输出参数

    千次阅读 2010-05-18 09:42:00
    1使用不带参数的存储过程 使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转义序列。不参数的 call 转义序列的语法如下所示: {call procedure-name} 作为实例,在 SQL Server 2005 ...
  • 1使用不带参数的存储过程 使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转义序列。不参数的 call 转义序列的语法如下所示: {call procedure-name} 作为实例,在 SQL Server 2005 ...
  • 有些初学者在调用存储过程时容易出现一些错误,下面我就不同返回参数而言举个用户登录常用例子做一些简单讨论:(由简单--->>深入) 创建数据库:(Student) 创建用户表:(Users) use Student go create ...
  • 输入输出的存储过程 首先来创建一个表,执行脚本如下脚本: --删除表 drop table book; --创建表book create table book (bid number,bname varchar2(50),bhouse varchar2(50)); --插入数据 insert into ...
  • 在SQL Server 的存储过程中,支持输入(Input)、输出参数(Output),也支持返回值参数(ReturnValue) 关于输入参数,大家都很好理解,就是我们提供数值给存储过程,这就好比是编程中的按值传递(ByVal)的形参。该参数...
  • (1) 用户自定义存储过程自定义存储过程即用户使用T_SQL语句编写、为了实现某一特定业务需求,在用户数据库中编写T_SQL语句集合,自定义存储过程可以接受输入参数、向客户端返回结果和信息,返回输出参数等。...
  • //创建数据库:(Student)//创建用户表:(Users)use Studentgocreate table Users (id int identity(1, 1) primary key,name nvarchar(20) not null,password nvarchar...带输入参数的存储过程create procedure proc_l
  • 有些初学者在调用存储过程时容易出现一些错误,下面我就不同返回参数而言举个用户登录常用例子做一些简单讨论:(由简单--->>深入) 创建数据库:(Student)创建用户表:(Users)use Studentgocreate table Users...
  • 存储过程的创建

    2016-07-25 23:54:39
    1.存储过程的创建 ...②参数create procedure 存储过程名称(IN 输入参数名 参数类型,OUT 输出参数名 参数类型) begin -- 这里写你sql语句 end 输入参数IN调用存储过程时指定,在存储过程中修改该

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 425
精华内容 170
关键字:

创建带输入输出参数的存储过程