精华内容
下载资源
问答
  • procedure
    千次阅读
    2022-01-03 17:25:26

    注:在测试过程中,已存在数据不满足当前测试时,我们就需要构造数据来满足我们的测试工作。

    如:现在需要1万条数据来模拟母猪上树时的坠亡事件(注:例子,,当然没人会像我一样无聊)!!!这个时候就需要数据起作用了,。那么我们简单的构造数据怎么做呢?那我们就开始吧

    一、什么是存储过程。

    --  存储过程 procedure
    --  存储过程是一组为了完成特定功能的SQL语句集合
    --  创建存储过程语法:
    delimiter //  -- 自定义结束符
    create procedure 存储过程名(输入输出类型 参数名1 参数类型,输入输出类型 参数名2 参数类型,……)
    begin
        sql语句集;
    end //


    --  使用存储过程
    call 存储名称( 参数1,参数2... );
    drop procedure if exists hello world;
    delimiter $$
    create procedure hello world()
    begin
                select * from emp ;
                select * from dept ;
                select * from student ;
    end $$

    call hello world();

    -- 例子
    -- 创建一个存储过程,名称为hello world
    -- 要求存储过程实现,查询emp和dept,列出姓名和部门名称 ;
    drop procedure if exists hello world;
    delimiter $$
    create procedure  hello world()
    begin
            select e.ename , d.dname from emp e inner join dept d on e.deptno = d.deptno ;
    end  $$   //这里用到多表查询

    call hello world();

    二、定义变量

    -- 定义变量的语法   declare 申明的是一个成员变量,成员变量的作用域仅限于申明的空间范围
    declare 变量名 数据类型(长度) default 默认值;

    drop procedure if exists hello world;
    delimiter $$
    create procedure hello world()
    begin
            declare h varchar(20) default 'hello' ;
            select h ;
            select ename into ttt from emp where id = 1;   
            select h ;
    end $$

    call hello world();

    三、输入参数

    -- 输入参数  
    -- 示例:输入一个姓名,查出他属于哪个部门
    drop procedure if exists hello world;
    create procedure hello world( in name varchar(20) )
    begin
                select d.dname from emp e , dept d where e.deptno = d.deptno and e.ename = name ;
    end

    call hello world( '彭于晏' );

    -- 示例: 输入两个工资范围,列出这个范围工资的员工是哪些
    drop procedure if exists hello world;
    delimiter $$
    create procedure hello world( sal1 int(20) , sal2 int(20) )
    begin
                select ename from emp where sal between sal1 and sal2 ;
    end $$
    delimiter ;

    call hello world( 8000 , 15000 );

    -- 示例:更新指定部门员工的工资上涨20%
    drop procedure if exists hello world;
    delimiter $$

    create procedure hello world( dept_name varchar(10) )
    begin
                -- 更新之前的数据
                select e.ename , e.sal , d.dname  from emp e , dept d where e.deptno = d.deptno and d.dname = dept_name order by e.sal ;
                -- 更新操作
                update emp set sal = sal * 1.2 where deptno = ( select deptno from dept where dname = dept_name );
                -- 更新之后的数据
                select e.ename , e.sal , d.dname  from emp e , dept d where e.deptno = d.deptno and d.dname = dept_name order by e.sal ;

    end $$
    delimiter ;

    四、变量赋值(全局)
    -- 变量
    drop procedure if exists hello world;
    delimiter $$
    create procedure hello world()
    begin
            declare name varchar(20) default '张飞';
            declare sal1 int(20) default 0;

            -- 查询name的值
            select name ;
            -- 查询出结果赋值给name,但不输出结果    赋值方法1
            select ename ,sal into name , sal1  from emp where empno = 10005 ;
            -- 查询name的值
            select name , sal1 ;
            -- 赋值方法2
            set name = '李白';
            -- 查询name的值
            select name ;
    end $$

    call hello world();

    drop procedure if exists hello world;
    create procedure hello world()
    begin
            declare emp_name varchar(20) default '小豆';    -- 作用域
            set emp_name = '小红' ; -- 给局部变量赋值为小红
            set @name = '小白';     -- 全局变量
            select emp_name , @name ;
    end

    call hello world();


    select  emp_name ;
    select  @name ;


    drop procedure if exists hello world;
    create procedure hello world()
    begin
            declare emp_name varchar(20) default '小豆';    -- 作用域
            select emp_name , @name ;
    end

    set @name = '小白';     -- 全局变量
    call hello world() ;

    五、输出参数

    -- 1输出参数
    drop procedure if exists hello world;
    create procedure hello world( out name varchar(20) )
    begin
            select name ;
            select ename into name from emp where empno = 10001;
            select name ;
    end

    set @name = '小白';

    select @name ;
    call hello world( @name );

    select @name ;

    -- 2示例
    drop procedure if exists hello world;
    create procedure hello world( out name varchar(20) )
    begin
            select name ;
            set name = @name ;
            select name ;
    end

    set @name = '小白';
    call hello world( @name );

    select @name;

    drop procedure if exists hello world;
    create procedure hello world( out name varchar(20) )
    begin
            set name= '小河' ;
    end

    set @name = '小韦' ;

    call hello world(  @name  ) ;

    select @name ;

    -- 变量的生命周期,存在于数据开启时,一旦关闭或重启数据库,变量则失去

    -- 输入输出参数
    drop procedure if exists hello world;
    delimiter $$
    create procedure hello world( inout name varchar(20) )
    begin
                select name ;
                set name = '小红';
    end $$
    delimiter ;

    set @name = '小白'

    call hello world( @name );
    select @name ;

    六、交换变量值(==)

    -- 交换两个边量的值
    drop procedure if exists hello world;
    delimiter $$
    create procedure hello world(  )
    begin
                declare one int(10) default 11;
                declare two int(10) default 99;
                declare three int(10) default 0;
                select one , two ;  -- 交换之前
                set three = one ;
                set one = two ;
                set two = three ;
                select one , two ;  -- 交换之后
    end $$

    call hello world(); --输出结果

    ---------------------元旦加班!!!快下班了,先这样,后续更新构造数据方法---------------------------

    更多相关内容
  • 存储过程 Stored Procedure4.1. 存储过程概述4.1.1. 存储过程的优点4.1.2. 存储过程的缺点4.2. 创建存储过程 create procedure4.2.1. 参数 in、out、inout4.3. 调用存储过程 call4.4. 查看存储过程4.4.1. 查看存储...
  • 打开IIS随便访问一个.asp文件,提示The remote procedure call failed and did not execute
  • PCIE 4.0 connector high speed electrical test procedure
  • 某台机器上,访问公司的好几个产品网站,都抛出很多 Invalid procedure call or argument ,跟进了下,情况最后简化为
  • 主要介绍了MYSQL中重命名procedure的一种方法,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
  • 赠送jar包:hbase-procedure-1.1.3.jar; 赠送原API文档:hbase-procedure-1.1.3-javadoc.jar; 赠送源代码:hbase-procedure-1.1.3-sources.jar; 赠送Maven依赖信息文件:hbase-procedure-1.1.3.pom; 包含翻译后...
  • A procedure is described that provides a universal solution for Lambert's problem. Based on the approach of Lancaster and his colleagues, the procedure uses Halley's cubic iteration process to ...
  • 主要介绍了通过PLSQL Developer创建Database link,DBMS_Job,Procedure,实现Oracle跨库传输数据,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
  • win10安装mysql报错The procedure entry point fesetround could not be located in the dynamic link library-附件资源
  • CREATE [OR REPLACE] PROCEDURE procedure_name [(parameter_list)] {IS|AS} [local_declarations] BEGIN executable_statements [EXCEPTION exception_handlers] END [procedure_name]; a.parameter_list格式如下 ...
  • 主要介绍了Oracle Procedure 知识,包括oracle的存储过程注意事项方面的内容,非常不错,具有参考借鉴价值,需要的朋友可以参考下
  • Procedure-data

    2021-03-20 08:08:14
    Procedure-data
  • 在Access自身的帮助中看到了Create Procedure语句,测试了老半天,终于发现了诀窍:必须使用OleDb连接才能使用Create Procedure语句。ODBC连接不支持该语句,提示Create Table语法错误。 创建了存储过程后,使用...
  • 不知道是否遇到过为MySQL表结构该选择什么类型字段而郁闷?或者为MySQL字段该选择多少长度而纠结?下面这篇文章就给大家介绍一个武林秘籍吧~也是我最近才学来的,感兴趣的朋友们下面来一起看看吧。
  • SAP_MRP_PROCEDURE_TYP.pdf

    2021-06-16 19:18:42
    SAP_MRP_PROCEDURE_TYP.pdf
  • 本文实例讲述了mysql存储过程之创建(CREATE PROCEDURE)和调用(CALL)及变量创建(DECLARE)和赋值(SET)操作方法。分享给大家供大家参考,具体如下: 存储过程创建(CREATE PROCEDURE)和调用(CALL) 这个咱就...
  • 主要介绍了 oracle中 procedure(存储过程)和function(函数)本质区别,非常不错,具有参考借鉴价值,需要的朋友可以参考下
  • S-Procedure for positive switched linear systems and its equivalence to Lyapunov–Metzler inequalities
  • 赠送jar包:hbase-procedure-1.2.12.jar; 赠送原API文档:hbase-procedure-1.2.12-javadoc.jar; 赠送源代码:hbase-procedure-1.2.12-sources.jar; 赠送Maven依赖信息文件:hbase-procedure-1.2.12.pom; 包含...
  • 赠送jar包:hbase-procedure-1.2.12.jar; 赠送原API文档:hbase-procedure-1.2.12-javadoc.jar; 赠送源代码:hbase-procedure-1.2.12-sources.jar; 赠送Maven依赖信息文件:hbase-procedure-1.2.12.pom; 包含...
  • SAS Mixed Procedure

    2018-11-30 09:32:53
    SAS Mixed Procedure 最新的SAS使用手册 15.1 全方位了解
  • 第十章 SQL命令 CREATE PROCEDURE(一)

    千次阅读 2021-09-09 08:42:16
    文章目录 第十章 SQL命令 CREATE PROCEDURE(一)大纲参数描述参数procnameparameter_list 第十章 SQL命令 CREATE PROCEDURE(一) 创建作为SQL存储过程公开的方法或查询。 大纲 CREATE PROCEDURE procname...

    文章目录

    第十章 SQL命令 CREATE PROCEDURE(一)

    创建作为SQL存储过程公开的方法或查询。

    大纲

    CREATE PROCEDURE procname(parameter_list)
       [ characteristics ]
       [ LANGUAGE SQL ]
       BEGIN
    code_body ;
       END
    
    CREATE PROCEDURE procname(parameter_list)
        [ characteristics ]
        LANGUAGE OBJECTSCRIPT
       { code_body }
    
    CREATE PROCEDURE procname(parameter_list)
        [ characteristics ]
        LANGUAGE { JAVA | PYTHON | DOTNET } EXTERNAL NAME external-stored-procedure
    
    CREATE PROC procname(parameter_list)
       [ characteristics ]
       [ LANGUAGE SQL ]
       BEGIN
    code_body ;
       END
    
    CREATE PROC procname(parameter_list)
        [ characteristics ]
        LANGUAGE OBJECTSCRIPT
       { code_body }
    
    CREATE PROC procname(parameter_list)
        [ characteristics ]
        LANGUAGE { JAVA | PYTHON | DOTNET } EXTERNAL NAME external-stored-procedure
    

    参数

    • procname - 要在存储过程类中创建的过程的名称。
      procname必须是一个有效的标识符。
      过程名可以是限定的(schema.procname),也可以是非限定的(procname)。
      非限定过程名接受默认模式名。
      procname后面必须跟圆括号,即使没有指定参数。
    • parameter_list - 可选——传递给过程的一个包含零个或多个参数的列表。
      参数列表用圆括号括起来,列表中的参数用逗号分隔。
      即使没有指定参数,括号也是必须的。
      每个参数由(按顺序)组成:一个可选的 INOUTINOUT关键字;
      变量名;
      数据类型;
      和一个可选的DEFAULT子句。
    • characteristics - 可选-一个或多个关键字,指定过程的特征。
      在创建方法时,允许的关键字是FINALFORPRIVATERETURNSSELECTMODE
      在创建查询时,允许的关键字是CONTAINIDFINALFORRESULTSSELECTMODE。可以指定特征关键字短语RESULT SETSDYNAMIC RESULT SETSDYNAMIC RESULT SETS n,其中n是整数。
      这些短语是同义词;
      DYNAMIC关键字和n整数为no-ops,提供兼容性。
      多个特征由空格(一个空格或换行符)分隔。
      特性可以以任何顺序指定。
    • LANGUAGE OBJECTSCRIPTLANGUAGE SQL - 可选-一个关键字子句,指定用于code_body的编程语言。
      指定语言OBJECTSCRIPT(用于OBJECTSCRIPT)或语言SQL
      如果省略LANGUAGE子句,则默认为SQL
    • LANGUAGE JAVALANGUAGE PYTHONLANGUAGE DOTNET - 可选-关键字子句,指定用于调用指定语言中的现有外部存储过程的编程语言。
      被调用的例程必须是一个静态方法。
    • code_body - 该程序的程序代码。SQL程序代码以BEGIN关键字开头,以END关键字结尾。
      code_body中的每个完整SQL语句都以分号(;)结束。ObjectScript程序代码用花括号括起来。
      ObjectScript代码行必须缩进。

    描述

    CREATE PROCEDURE语句创建一个方法或查询,该方法或查询将自动作为SQL存储过程公开。
    存储过程可以由当前名称空间中的所有进程调用。
    存储过程由子类继承。

    • 如果使用SQL语言,则code_body必须包含SELECT语句,以便生成公开为存储过程的查询。
      如果代码不包含SELECT语句,则CREATE PROCEDURE创建一个方法。
    • 如果LANGUAGE OBJECTSCRIPT,则code_body必须调用Execute()Fetch()方法,以生成公开为存储过程的查询。
      它也可以调用Close()FetchRows()GetInfo()方法。
      如果代码没有调用Execute()Fetch(),则CREATE PROCEDURE创建一个方法。

    默认情况下,CREATE PROCEDURE创建公开为存储过程的方法。

    要创建未公开为存储过程的方法,请使用 CREATE METHODCREATE FUNCTION语句。
    若要创建未公开为存储过程的查询,请使用CREATE QUERY语句。
    通过指定procedure特征关键字,这些语句还可以用于创建作为存储过程公开的方法或查询。

    为了创建一个过程,必须具有GRANT命令指定的%CREATE_PROCEDURE管理权限。
    如果为具有已定义所有者的现有类创建过程,则必须作为该类的所有者登录。
    否则,操作将失败,并出现SQLCODE -99错误。

    如果类定义是已部署的类,则不能在类中创建过程。
    此操作失败,并出现一个带有%msgSQLCODE -400错误Unable to execute DDL that modifies a deployed class: 'classname'.

    使用CALL语句执行存储过程。

    参数

    procname

    要创建为存储过程的方法或查询的名称。即使没有指定参数,procname后面也必须有括号。过程名可以采用以下任何形式:

    • Unqualified不限定的:接受默认模式名。例如,MedianAgeProc()
    • Qualified:提供模式名称。例如,Patient.MedianAgeProc()
    • Multilevel多级:限定为一个或多个模式层,以并行相应的类包成员。
      在这种情况下,procname可能只包含一个句点字符;
      对应类方法名中的其他句点将被下划线字符替换。
      在最低级别的类包成员之前指定句点。
      例如,%SYSTEM.SQL_GetROWID()%SYS_PTools.StatsSQL_Export()

    非限定的procname接受默认模式名。
    可以使用$SYSTEM.SQL.Schema.Default()方法确定当前系统范围的默认模式名。
    系统范围的初始默认模式名是SQLUser,它对应于类包名User

    注意,FOR特征(将在下面描述)覆盖了在procname中指定的类名。
    如果已经存在具有此名称的过程,则操作将失败,并出现SQLCODE -361错误。

    SQL使用SQL procname生成相应的类名。
    该名称由与模式名对应的包名、点、" proc "和指定的过程名组成。
    例如,如果非限定过程名RandomLetter()接受默认模式SQLUser,则产生的类名将是:User.procRandomLetter()

    SQL不允许指定只以字母大小写不同的procname
    指定一个只在字母大小写上与现有过程名不同的procname将导致SQLCODE -400错误。

    如果指定的procname已经存在于当前命名空间中,系统将生成SQLCODE -361错误。
    要确定指定的procname是否已经存在于当前命名空间中,请使用$SYSTEM.SQL.Schema.ProcedureExists()方法。

    注意: SQL过程名称和 TSQL过程名称共享同一组名称。
    因此,不能在同一命名空间中创建与TSQL过程同名的SQL过程。
    尝试这样做会导致SQLCODE -400错误。

    parameter_list

    用于将值传递给方法或查询的参数列表。
    形参列表用圆括号括起来,列表中的形参声明用逗号分隔。
    括号是必须的,即使没有指定参数。

    列表中的每个参数声明由(按顺序)组成:

    • 一个可选关键字,指定参数模式是IN(输入值)、OUT(输出值)还是INOUT(修改值)。如果省略,默认参数模式为IN
    • 参数名称。参数名称区分大小写。
    • 参数的数据类型。
    • 可选:默认值。
      可以指定DEFAULT关键字后跟一个默认值;
      DEFAULT关键字是可选的。
      如果没有指定默认值,则假定默认值为NULL

    下面的示例创建了一个具有两个输入参数的存储过程,这两个参数都具有默认值。
    一个输入参数指定可选的DEFAULT关键字,另一个输入参数忽略该关键字:

    CREATE PROCEDURE AgeQuerySP(IN topnum INT DEFAULT 10,IN minage INT 20)
       BEGIN
       SELECT TOP :topnum Name,Age FROM Sample.Person
       WHERE Age > :minage ;
       END
    

    下面的示例在功能上与上面的示例相同。可选的DEFAULT关键字省略:

    CREATE PROCEDURE AgeQuerySP(IN topnum INT 10,IN minage INT 20)
       BEGIN
       SELECT TOP :topnum Name,Age FROM Sample.Person
       WHERE Age > :minage ;
       END
    

    下面是这个过程中所有有效的CALL语句:

    CALL AgeQuerySP(6,65); CALL AgeQuerySP(6); CALL AgeQuerySP(,65); CALL AgeQuerySP().
    

    在这里插入图片描述

    下面的示例创建了一个公开为具有三个参数的存储过程的方法:

    CREATE PROCEDURE UpdatePaySP
      (IN Salary INTEGER DEFAULT 0,
       IN Name VARCHAR(50), 
       INOUT PayBracket VARCHAR(50) DEFAULT 'NULL')
    BEGIN
       UPDATE Sample.Employee SET Salary = :Salary
       WHERE Name=:Name ;
    END
    

    存储过程不执行参数的自动格式转换。
    例如,ODBC格式或Display格式的输入参数仍然保持该格式。
    调用过程的代码和过程代码本身负责以适合应用程序的格式处理IN/OUT值,并执行任何必要的转换。

    因为方法或查询是作为存储过程公开的,所以它使用过程上下文处理程序在过程及其调用方之间来回传递过程上下文。调用存储过程时,%Library.SQLProcContext类的对象在%sqlcontext变量中实例化。这用于在过程及其调用者(例如ODBC服务器)之间来回传递过程上下文。

    %sqlcontext由几个属性组成,包括Error对象、SQLCODE错误状态、SQL行数和错误消息。
    下面的示例显示了用于设置其中几个参数的值:

      SET %sqlcontext.%SQLCODE=SQLCODE
      SET %sqlcontext.%ROWCOUNT=%ROWCOUNT
      SET %sqlcontext.%Message=%msg
    

    SQLCODE%ROWCOUNT的值是在执行SQL语句时自动设置的。
    %sqlcontext对象在每次执行之前都被重置。

    或者,也可以通过实例化%SYSTEM来建立错误上下文。
    对象,并将其设置为%sqlcontext.Error

    展开全文
  • PCIE 4.0 connector high speed electrical test procedure
  • 赠送jar包:hbase-procedure-1.4.3.jar; 赠送原API文档:hbase-procedure-1.4.3-javadoc.jar; 赠送源代码:hbase-procedure-1.4.3-sources.jar; 赠送Maven依赖信息文件:hbase-procedure-1.4.3.pom; 包含翻译后...
  • 赠送jar包:hbase-procedure-1.1.3.jar; 赠送原API文档:hbase-procedure-1.1.3-javadoc.jar; 赠送源代码:hbase-procedure-1.1.3-sources.jar; 赠送Maven依赖信息文件:hbase-procedure-1.1.3.pom; 包含翻译后...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 407,827
精华内容 163,130
关键字:

procedure