db2命令

来源:互联网 发布:三菱plc编程实例精解 编辑:程序博客网 时间:2024/05/21 10:30

1.db2 ? sqlcode 

命令:db2 ? sql-440

结果:

SQL0440N  找不到具有兼容自变量的类型为 "<例程类型>" 的名为 "<例
      程名>" 的已授权例程。


说明: 


当数据库管理器找不到可用来实现引用的例程时,如果引用例程 "<例程名>",那
么会发生此错误。引起此错误的原因有下列几个: 
*  "<例程名>" 未正确指定或者在数据库中不存在。
*  进行了限定引用,但不正确地指定了限定符。
*  用户的 SQL 路径不包含期望的函数或方法所属的模式,且使用了一个非限定
   引用。
*  包括了错误的自变量数。
*  函数或方法引用中包括正确数目的自变量,但是一个或多个自变量的数据类型
   不正确。
*  例程不存在于具有在绑定程序包时使用的相同函数标识的数据库中(适用于静
   态语句)。
*  找不到与 UPDATE 语句中所使用的属性赋值相对应的 mutator 方法。新属性
   值的数据类型与该属性的数据类型不同,并且不是可提升为该属性的数据类型
   的数据类型。
*  例程调用程序无权执行该例程。


用户响应: 


修正问题,然后再次尝试。这可能涉及目录访问、更改语句、授予对例程调用程
序的执行特权、新函数的添加和/或 SQL 路径的更改。


  sqlcode:  -440


  sqlstate:  42884

2.存储过程

创建SQL存储过程(CREATE PROCEDURE (SQL) statement )

1
2
3
4
5
6
7
8
9
10
CREATE PROCEDURE procedure-name(IN OUT | INOUT parameter-name data-type,...) ) ---存储过程可以设定输入参数和输出参数
LANGUAGE SQL                   ----DB2可以用多种语言编写存储过程,这里用的是纯SQL
BEGIN                          ---开始
DECLARE vID   smallint;        ---定义变量 和Oracle一样 DECLARE   变量名 变量的数据类型;
FOR AS SELECT BRND_CD FROM TMP_BRND_CD   ---for循环 tmp_brnd_cd预先创建好
DO                                         ---循环体开始
SET vID=BRND_CD;                       ---对vID赋值,db2可以用set赋值,也可以用values赋值,这里可以写成values(BRND_CD) into vID
INSERT INTO WWM_FORINSERT_TEST VALUES(vID); ---往wwm_forinsert_test 插入数据
END FOR;                              -----循环体结束
END @                             -----存储过程结束

参数语法说明

1、procedure-name: 存储过程的名字,在同一个数据库的同一模式下,不能存在存储过程名相同参数数目相同的存储过程,即使参数的类型不同也不行。 

2、(IN | OUT | INOUT parameter-name data-type,...) :传入参数      IN:输入参数OUT:输出参数INOUT:作为输入输出参数      parameter-name:参数名字,在此存储过程中唯一的标识符。data-type:参数类型,可以接收SQL类型和创建的表。不支持LONG VARCHAR, LONG VARGRAPHIC, DATALINK, REFERENCE和用户自定义类型。

3、SPECIFIC specific-name:唯一的特定名称(别名),可以用存储过程名代替,这个特定名称用于dorp存储过程,或者给存储过程添加注视用,但不能调用存储过程。如果不指定,则数据库会自动生成一个yymmddhhmmsshhn时间戳的名字。推荐给出别名。

4、DYNAMIC RESULT SETS integer:指定存储过程返回结果的最大数量。存储过程中虽然没有return语句,但是却能返回结果集。

5、CONTAINS SQL, READS SQL DATA, MODIFIES SQL DATA: 指定存储过程中的SQL访问级别      CONTAINS SQL: 表示存储过程可以执行中,既不可读取 SQL 数据,也不可修改 SQL 数据。      READS SQL DATA: 表示存储过程可以执行中,可读取SQL,但不可修改 SQL 数据。      MODIFIES SQL DATA: 表示存储过程可以执行任何 SQL 语句。可以对数据库中的数据进行增加、删除和修改。 

6、DETERMINISTIC or NOT DETERMINISTIC:表示存储过程是动态或者非动态的。动态的返回的值是不确定的。非动态的存储过程每次执行返回的值是相同的。

7、CALLED ON NULL INPUT:表示可以调用存储过程而不管任何的输入参数是否为NULL,并且,任何的OUT或者INOUT参数可以返回一个NULL或者非空值。检验参数是否为NULL是在过程中进行的。

8、INHERIT SPECIAL REGISTERS:表示继承专用寄存器。

9、OLD SAVEPOINT LEVEL or NEW SAVEPOINT LEVEL:建立存储点。OLD SAVEPOINT LEVEL是默认的存储点。

10、LANGUAGE SQL:指定程序的主体用的是SQL语言。

11、EXTERNAL ACTION or NO EXTERNAL ACTION:表示存储过程是否执行一些改变理数据库状态的活动,而不通过数据库管理器管。默认是 EXTERNAL ACTION。如果指定为NO EXTERNAL ACTION ,则数据库会确定最最佳优化方案。

12、PARAMETER CCSID:指定所有输出字符串数据的编码,默认为UNICODE编码数据库为PARAMETER CCSID UNICODE ,其他的数据库默认为PARAMETER CCSID 3 ASCII。

13、SQL-procedure-body:存储过程的主体

实际问题1

远程Toad For Db2连接时候 

结点名:本机的要唯一

数据库:远程数据库名称要一致

数据库别名:远程不同IP上数据库名一样  这样  数据库别名 在自己的本机上要唯一

list node directory

删除NODE

uncatalog node node_name

删除数据库

drop database_name

IBM DB2 Catalog使用及浅析

http://meizhi.javaeye.com/blog/466071

DB2新手使用的一些小笔记:新建实例、数据库路径不存在、客户端连接 <未看>

http://blog.csdn.net/cecilulysess/archive/2009/10/06/4637238.aspx

 附上一个 存储过程的模版

CREATE PROCEDURE HR.pro_demo_fan (
    IN IN_COMPANY INTEGER,
    IN IN_WORKSITEID INTEGER,
    IN I_STR_SWHERE VARCHAR(500) )
  SPECIFIC pro_demo_fan
  DYNAMIC RESULT SETS 1
  LANGUAGE SQL
  NOT DETERMINISTIC
  EXTERNAL ACTION
  MODIFIES SQL DATA
  CALLED ON NULL INPUT
  INHERIT SPECIAL REGISTERS
----------------------------------------
--FUNTION:  fanruyi
--CREATER: 存储过程模版
--CREATE DATE:  2009.10.20
----------------------------------------
BEGIN
DECLARE V_STR VARCHAR(22000);
DECLARE V_SUM DOUBLE;
 -- 自定义变量声明区域
 declare v_yearmonth varchar(6);  --年月

---游标
DECLARE RS CURSOR WITH RETURN TO CALLER FOR RP;

----------------
---全局临时表---
----------------
DECLARE GLOBAL TEMPORARY TABLE SESSION.TBRPT_EMP
(
id  integer
)
ON COMMIT DELETE ROWS
NOT LOGGED ON ROLLBACK DELETE ROWS            
WITH REPLACE; 
----------------
---返回结果集---
----------------
SET V_STR='select empname from employee ';
PREPARE RP FROM V_STR;                                              
OPEN RS;
END;

--赋权
GRANT EXECUTE ON PROCEDURE HR.pro_demo_fan( INTEGER, INTEGER, VARCHAR(500) ) TO  USERNAME;
GRANT EXECUTE ON PROCEDURE HR.pro_demo_fan( INTEGER, INTEGER, VARCHAR(500) ) TO USERNAME;

 

DB2操作指令

原帖地址 http://fanqiang.chinaunix.net/db/db2/2006-05-29/4326.shtml

1. 启动实例(db2inst1):
db2start

2. 停止实例(db2inst1):
db2stop

3. 列出所有实例(db2inst1)
db2ilist

5.列出当前实例:
db2 get instance

4. 察看示例配置文件:
db2 get dbm cfg|more

5. 更新数据库管理器参数信息:
db2 update dbm cfg using para_name para_value

6. 创建数据库:
db2 create db test

7. 察看数据库配置参数信息
db2 get db cfg for test|more

8. 更新数据库参数配置信息
db2 update db cfg for test using para_name para_value

10.删除数据库:
db2 drop db test

11.连接数据库
db2 connect to test

12.列出所有表空间的详细信息。
db2 list tablespaces show detail

13.查询数据:
db2 select * from tb1

14.数据:
db2 delete from tb1 where id=1

15.创建索引:
db2 create index idx1 on tb1(id);

16.创建视图:
db2 create view view1 as select id from tb1

17.查询视图:
db2 select * from view1

18.节点编目
db2 catalog tcp node node_name remote server_ip server server_port

19.察看端口号
db2 get dbm cfg|grep SVCENAME

20.测试节点的附接
db2 attach to node_name

21.察看本地节点
db2 list node direcotry

22.节点反编目
db2 uncatalog node node_name

23.数据库编目
db2 catalog db db_name as db_alias at node node_name

24.察看数据库的编目
db2 list db directory

25.连接数据库
db2 connect to db_alias user user_name using user_password

26.数据库反编目
db2 uncatalog db db_alias

27.导出数据
db2 export to myfile of ixf messages msg select * from tb1

28.导入数据
db2 import from myfile of ixf messages msg replace into tb1

29.导出数据库的所有表数据
db2move test export

30.生成数据库的定义
db2look -d db_alias -a -e -m -l -x -f -o db2look.sql

31.创建数据库
db2 create db test1

32.生成定义
db2 -tvf db2look.sql

33.导入数据库所有的数据
db2move db_alias import

34.重组检查
db2 reorgchk

35.重组表tb1
db2 reorg table tb1

36.更新统计信息
db2 runstats on table tb1

37.备份数据库test
db2 backup db test

38.恢复数据库test
db2 restore db test

39.列出容器的信息
db2 list tablespace containers for tbs_id show detail

40.创建表:
db2 ceate table tb1(id integer not null,name char(10))

41.列出所有表
db2 list tables

42.插入数据:
db2 insert into tb1 values(1,’sam’);
db2 insert into tb2 values(2,’smitty’);


0 0
原创粉丝点击