文档章节

DB2 从命令行创建SQL存储过程

Goopand
 Goopand
发布于 2015/04/16 15:50
字数 627
阅读 33
收藏 0
点赞 0
评论 0

从命令行创建 SQL 过程

开始之前

  • 用户必须具有对 SQL 过程执行 CREATE PROCEDURE 语句所需的特权。

  • 执行过程的 SQL 过程体内包括的所有 SQL 语句的特权。

  • SQL 过程的 CREATE PROCEDURE 语句中引用的数据库对象必须存在,才能执行该语句。

过程

  • 对命令行处理器 (DB2® CLP) 选择缺省终止符以外的备用终止符,以在下一步中要预编译的脚本中使用,缺省终止符为分号(“;”)。

    CLP 必须能够区分出现在例程体的 CREATE 语句内的 SQL 语句结尾和 CREATE PROCEDURE 语句本身的结尾。分号字符必须用于在 SQL 例程体中终止 SQL 语句,所选备用终止符应该用于终止 CREATE 语句及可能包含在 CLP 脚本中的任何其他 SQL 语句。

    例如,在以下 CREATE PROCEDURE 语句中,“at;”符号(“@”)用作 DB2 CLP 脚本 myCLPscript.db2 的终止符:

        CREATE PROCEDURE UPDATE_SALARY_IF
        (IN employee_number CHAR(6), IN rating SMALLINT)
        LANGUAGE SQL
        BEGIN
          DECLARE not_found CONDITION FOR SQLSTATE '02000';
          DECLARE EXIT HANDLER FOR not_found
             SIGNAL SQLSTATE '20000' SET MESSAGE_TEXT = 'Employee not found';
    
          IF (rating = 1)
            THEN UPDATE employee
              SET salary = salary * 1.10, bonus = 1000
              WHERE empno = employee_number;
          ELSEIF (rating = 2)
            THEN UPDATE employee
              SET salary = salary * 1.05, bonus = 500
              WHERE empno = employee_number;
          ELSE UPDATE employee
              SET salary = salary * 1.03, bonus = 0
              WHERE empno = employee_number;
          END IF;
        END
    @
  • 使用以下 CLP 命令从命令行运行包含 CREATE PROCEDURE 语句的 DB2 CLP 脚本:

    db2 -td terminating-character -vf CLP-script-name

    其中 终止符 是在要运行的 CLP 脚本文件 CLP-脚本名 中使用的终止符。

    DB2 CLP 选项 -td 指示将使用终止符复位 CLP 终止符缺省值。-vf 指示将使用 CLP 的可选冗余(-v)选项,这会导致脚本中的每个 SQL 语句或命令运行时显示到屏幕上,同时显示执行这些语句或命令所生成的输出。-f 选项指示命令的目标为文件。

    要运行第一步中显示的特定脚本,请从系统命令提示符发出以下命令:

    db2 -td@ -vf myCLPscript.db2

相关参考:
CREATE FUNCTION(SQL 标量、表或行)语句

CREATE PROCEDURE (SQL) 语句

CREATE TYPE(结构化)语句


注意事项&小结:

由于db2look默认的分隔符是分号(;),而导出的存储过程之间也是以分号相隔。

为了db2命令行(CLP)从文件读取ddl编译存储过程,需要以一个非分号的分隔符,来分隔不同的存储过程,一般是@符放在END后面。




本文转载自:http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.apdv.sqlpl.doc/doc/t00...

共有 人打赏支持
Goopand
粉丝 8
博文 376
码字总数 186222
作品 0
朝阳
处理 DB2 数据 SQL 过程和用户定义的函数

创建和调用 SQL 过程 SQL 过程 是过程体用 SQL 编写的过程。过程体包含 SQL 过程的逻辑。它可以包含变量声明、条件处理、流控制语句和 DML。可以在复合语句(compound statement) 中指定多个...

范大脚脚
2017/11/12
0
0
使用Rational Data Architect v6.1构建,测试,部署DB2 SAMPLE数据库

概述 我们的场景是一个 DB2 UDB 的端到端的任务流,您在其中开发和调试一个 SQL 的存储过程。开始建立一个到 DB2 LUW 数据库的连接,该数据库提供数据开发工程的环境,在其中您将开发一个过程...

晨曦之光
2012/03/09
0
0
c++利用SqlApi访问SqlServer数据库(存储过程篇)

一、SqlApi介绍 SqlApi++是一个为访问Sql数据库而编写的库。支持对Oracle, SQL Server, DB2, Sybase, Informix, InterBase, SQLBase, MySQL, PostgreSQL, SQLite, ODBC数据库的访问。他提供简...

moki_oschina
2013/12/25
0
0
DBeaver 4.2.4 发布,数据库管理工具

DBeaver 4.2.4 发布了。DBeaver 是一个通用的数据库管理工具和 SQL 客户端,支持 MySQL, PostgreSQL, Oracle, DB2, MSSQL, Sybase, Mimer, HSQLDB, Derby, 以及其他兼容 JDBC 的数据库。 更新...

达尔文
2017/10/30
1K
8
db2 调用存储过程创建文件 报DB21005E,求指教

存储过程创建语句: CREATE OR REPLACE PROCEDURE "JMSI"."LY05_SC" ( IN PI_SHNY VARCHAR(6) , OUT PO_FHZ VARCHAR(50), OUT PO_MSG VARCHAR(500)) DYNAMIC RESULT SETS 1 SPECIFIC LY05_SC......

钟小华
2012/05/26
1K
0
IBM的DB2数据库常用命令及查询

IBM的DB2数据库常用命令及查询2017年04月16日 11:57:31阅读数:33431、 打开命令行窗口  #db2cmd2、 打开控制中心  #db2cmd db2cc3、 打开命令编辑器 #db2cmd db2ce=====操作数据库命令=...

rootliu
05/10
0
0
SuSE11安装DB2 V9.7(64位)详细步骤

SuSE11安装DB2 V9.7(64位)详细步骤 分类: 数据库开发技术 2015-05-18 10:18:20 SuSE11安装DB2 V9.7(64位)详细步骤 1 安装db2 把db2 V9.7的安装文件db2exc970LNXx8664.tar拷贝到SUSE的桌...

rootliu
04/27
0
0
使用 IBM Data Studio 开发调试 DB2 存储过程

使用 IBM Data Studio 开发调试 DB2 存储过程 本文主要介绍如何使用 IBM Data Studio 开发数据库存储过程和 Data Web Services 。 IBM Data Studio 对数据库开发提供了完备的支持,同时提供了...

KavenSu
2014/05/07
0
0
深入了解 IBM DB2 高级企业版

简介: IBM® DB2® Advanced Enterprise Server Edition(AESE)是将 IBM DB2 Enterprise Server Edition V9.7 与优化、开发、管理工具打包在一起销售的软件包。这是用于管理 DB2 环境关键方...

IBMdW
2011/06/24
1K
1
db2pd和db2support

C:IBMSQLLIBBIN>db2 get instance C:IBMSQLLIBBIN>db2 get dbm cfg C:IBMSQLLIBBIN>db2 connect to sample C:IBMSQLLIBBIN>db2 "select bpname,bufferpoolid,npages,pagesize from syscat.bu......

晨曦之光
2012/03/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

jq 判断复选框是否被选中,复选框后台接收

1. 效果 2. 代码 html部分: JS部分: var rememberLogin = $("#rememberLoginId").is(':checked')//获取复选框是否被选中 var rememberLoginval = $("#rememberLoginId").attr('value')//拿......

Lucky_Me
12分钟前
0
0
python爬虫日志(3)-爬去异步加载网页

在浏览器检查元素页面中,选取Network中的XHR选项即可观察每次加载页面,网页发出的请求,观察url的规律即可利用封装的函数对每一页进行爬取。

茫羽行
12分钟前
0
0
《趣谈网络协议》之为什么要学习网络协议?

一、协议 1.协议的定义 简单说协议就是一个规则,保证沟通交流双方可以互相听懂、理解或者可以双方合作可以顺利进行的一个约定和规则。 2.生活中例子 (1)有一种叫“程序猿”的物种,敲着一种...

aibinxiao
14分钟前
1
0
Python数据分析numpy基础-维度的认识

什么是多维数组? 核心对象是同型的多维数组(简单理解就是一个表格,通常内容都是些数字),具有相同的数据类型。 概念: 1. axes(轴):数组的维度统称为轴。 2. rank:轴的数量称为rank。...

十年磨一剑3344
18分钟前
0
0
Java 正则表达式相关资料

1.java正则表达式过滤html标签

IT追寻者
21分钟前
0
0
点赞出现数字变大效果

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .container{ padding: 50px; border: 1px solid #dddddd; } .item{ position: relative; } ......

南桥北木
40分钟前
0
0
anroid中批量将px转换成dp

package com.qu;import java.io.File;import java.io.FileWriter;import java.io.IOException;public class Aaaa {public static void main(String[] args) {String fi......

android-key
41分钟前
0
0
shell导出svn差异文件

#!/bin/shOLD_VERSION=$1NEW_VERSION=$2USERNAME="bobway"PASSWORD="bobway"EXPORT_PATH="/home/export"SVN_URL="svn://127.0.0.1/bob"DIFF_URL="svn diff -r ${OLD_V......

bobway
50分钟前
0
0
不念既往,不畏未来

不念既往,不畏未来 只有活在当下,才能获得快乐

yizhichao
51分钟前
0
0
JS Base64 转文件,转二进制,图片转 Base64

/** * 网络图像文件转Base64 */function getBase64Image(img) { var canvas = document.createElement("canvas"); canvas.width = img.width; canvas.height = img.height;......

Jack088
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部