此示例的所有sql语句均在 DB2 V9.7版本安装后的命令编辑器中编写


     1 .windwos server 2003 安装DB2数据库这个就不用说了比起liunx 的安装简单多了。xp和ws2003差不多一样


setup.exe运行后点击左边的第五个 ”安装产品“ 然后点击右边 ”安装新产品“。剩下的就默认。


           安装过程中会让你为 db2admin 建立密码 输入你的密码就行了,一定要记住!! )


     2.安装好DB2数据库后就可以建立自己的第一个测试数据库了(所有数据库>>创建数据库>>标准 然后输入 数据库名      称和别名  缺省路径就默认的 其他的都选默认 点击完成稍等数据库就建立成功了!)


    3. 给数据库创建 模式和数据库用户 


a. 创建用户 右键我的电脑 >>管理>>点击本地用户和组展开>>点击用户>>新建用户>> 输入用户名和全名,全名可随意 以及密码 ,在  user must change password at next logon 前面打勾>>点击创建 ok 用户名就创建好了。


b.给数据库添加用户 展开刚才建立的数据库>>展开用户和组对象>>添加新的用户>>在用户下拉列表中选中你刚才建立的用户 。在所有的权限前面打勾>>点击确定。


c.点击数据库下的模式 >>创建新的模式(输入你中意的模式名)>>在权限名下拉列表中选择你刚才建立的权限名>>点击确定。ok模式简历好了。


      以上 模式 ,权限名,数据库,用户名等等这些东西可在ibm官方文档有详细说明。在这就不说了。(我个人理解类似于金字塔的管理样子层层管理。 )


    4.打开命令编辑器(工具栏第四个)就可以编写sql语句了。(这个没有任何语句提示类似于记事本关键字不显示高亮推荐使用这个客户端 DBeaver 有关键字提示但是对sql语句的错误信息只返回错误码。没有详细说明。)


下面是一个示例sql 语句 创建表 ,创建存储过程:




存储过程名是: 【模式+.+存储过程名字】 创建表也一样不然可能引发权限错误。


示例中的admin就是你建立的模式名称。


--创建测试表


  CREATE TABLE  admin.TABLE1 (NAME VARCHAR(50), BIRTH  DATE) 




--插入测试数据    “current timestamp” 关键字插入当前日期


insert into table2 values(1,'db2_test_table2', current timestamp);




--查看测试数据


SELECT * FROM  admin.TABLE1




 -- -创建存储过程


功能: 据根据传入的模式和 表名 名 清除某一张表的全部数。如果 表名和模式名不存在返回状态1


参数:(参数:SCH 传入表明,TAB  模式名,ERR_STATE  错误状态)


关键符号:|| 类似于+,拼接变量时用到。db2 字符串用单引号括起来。


LANGUAGE SQL 声明你用的是纯sql语句其他的大家都认识。




CREATE OR REPLACE PROCEDURE  admin.P_DELE(IN SCH VARCHAR(50),IN TAB VARCHAR(50),OUT ERR_STATE INTEGER)
LANGUAGE SQL
BEGIN
DECLARE EXSQL VARCHAR(1000);
DECLARE NUM INTEGER;
SELECT COUNT(1) INTO NUM FROM syscat.TABLES WHERE TABSCHEMA=ltrim(rtrim(SCH)) AND TABNAME=ltrim(rtrim(TAB));
IF(NUM > 0) THEN
SET EXSQL=' DELETE FROM '|| ltrim(rtrim(SCH)) ||' . '|| ltrim(rtrim(TAB)) ||'';
SET ERR_STATE=0;
PREPARE s1 FROM EXSQL;
    EXECUTE s1;
    ELSE
    SET ERR_STATE=1;
    END IF;
END






--执行存储过程  传入模式名 和 表名


输出参数用问号占位(DBeaver这个工具对输出参数不支持。某前我看不懂还希望高人指点)


CALL ADMIN.PROC_DELE1('你的模式名','你的表名',?);






  输出参数的值
  --------------------------
  参数名: ERR_STATE
  参数值: 0

  返回状态 = 0





执行SELECT * FROM  admin.TABLE1 数据已经全部清除。上面的拼接sql语句可能比较爱出错。推荐用这个[ values()] 系统自带的函数可以测试拼接的字符串。


                                      


--删除存储过程




DROP PROCEDURE   模式名+你的存储过程名字


注:如果有两个名字相同但是参数不同不同的存储过程,删除时要加存储过程名字对应的数据类型。


例如


drop procedure admin1.P_proc1(varchar(),varchar(),integer,varchar())   四个参数
drop procedure admin1.P_proc1(varchar(),varchar(),varchar());              三个参数







本人初学DB2说的有啥错误还请大家多多指教。感激不尽。3q。