SQl添加、删除、修改语句

 SQl添加、删除、修改语句


SQL语句的添加、删除、修改虽然有如下很多种方法,但在使用过程中还是不够用,不知是否有高手把更多灵活的使用方法贡献出来?

添加、删除、修改使用db.Execute(Sql)命令执行操作
╔----------------╗
☆ 数据记录筛选 ☆
╚----------------╝
注意:单双引号的用法可能有误(没有测式)

Sql = "Select Distinct 字段名 From 数据表"
Distinct函数,查询数据库存表内不重复的记录

Sql = "Select Count(*) From 数据表 where 字段名1>#18:0:0# and 字段名1< #19:00# "
count函数,查询数库表内有多少条记录,“字段名1”是指同一字段
例:
set rs=conn.execute("select count(id) as idnum from news")
response.write rs("idnum")

sql="select * from 数据表 where 字段名 between 值1 and 值2"
Sql="select * from 数据表 where 字段名 between #2003-8-10# and #2003-8-12#"
在日期类数值为2003-8-10 19:55:08 的字段里查找2003-8-10至2003-8-12的所有记录,而不管是几点几分。

select * from tb_name where datetime between #2003-8-10# and #2003-8-12#
字段里面的数据格式为:2003-8-10 19:55:08,通过sql查出2003-8-10至2003-8-12的所有纪录,而不管是几点几分。


Sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"

Sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"
模糊查询

Sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"
查找数据库中前10记录

Sql="select top n * form 数据表 order by newid()"
随机取出数据库中的若干条记录的方法
top n,n就是要取出的记录数

Sql="select * from 数据表 where 字段名 in ('值1','值2','值3')"

╔----------------╗
☆ 添加数据记录 ☆
╚----------------╝
sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"

sql="insert into 数据表 valuess (值1,值2,值3 …)"
不指定具体字段名表示将按照数据表中字段的顺序,依次添加

sql="insert into 目标数据表 select * from 源数据表"
把源数据表的记录添加到目标数据表

╔----------------╗
☆ 更新数据记录 ☆
╚----------------╝
Sql="update 数据表 set 字段名=字段值 where 条件表达式"

Sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"

Sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n "
没有条件则更新整个数据表中的指定字段值

╔----------------╗
☆ 删除数据记录 ☆
╚----------------╝
Sql="delete from 数据表 where 条件表达式"

Sql="delete from 数据表"
没有条件将删除数据表中所有记录)

╔--------------------╗
☆ 数据记录统计函数 ☆
╚--------------------╝
AVG(字段名) 得出一个表格栏平均值
COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名) 取得一个表格栏最大的值
MIN(字段名) 取得一个表格栏最小的值
SUM(字段名) 把数据栏的值相加

引用以上函数的方法:
sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"
set rs=conn.excute(sql)
用 rs("别名") 获取统的计值,其它函数运用同上。

╔----------------------╗
☆ 数据表的建立和删除 ☆
╚----------------------╝
Create TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )
例:Create TABLE tab01(name varchar(50),datetime default now())
Drop TABLE 数据表名称 (永久性删除一个数据表)

╔--------------------╗
☆ 记录集对象的方法 ☆
╚--------------------╝
rs.movenext 将记录指针从当前的位置向下移一行
rs.moveprevious 将记录指针从当前的位置向上移一行
rs.movefirst 将记录指针移到数据表第一行
rs.movelast 将记录指针移到数据表最后一行
rs.absoluteposition=N 将记录指针移到数据表第N行
rs.absolutepage=N 将记录指针移到第N页的第一行
rs.pagesize=N 设置每页为N条记录
rs.pagecount 根据 pagesize 的设置返回总页数
rs.recordcount 返回记录总数
rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否
rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否
rs.delete 删除当前记录,但记录指针不会向下移动
rs.addnew 添加记录到数据表末端
rs.update 更新数据表记录

 

DB2 数据库恢复的办法
===========================================================
DB2连接的问题
===========================================================
Problem
I create a connected datastore object in a servlet and then pass the connected datastore object to a method in a different

servelet to perform an operation. I frequently get DKException "[IBM][CLI Driver] CLI0125E Function sequence error.

SQLSTATE=HY010 " 
 
Cause
If the same datastore object is not property synchronized in a multithreading scenario, the following error is likely to

occur when performing operations on the datastore:

DKException
[IBM][CLI Driver] CLI0125E Function sequence error. SQLSTATE=HY010
 
 
Solution
This is a classic symptom of a threading problem. Most likely, the same datastore instance is used by multiple threads at the

same time.

Either strictly synchronize your access to the datastore object or have each thread use its own separate connected

DKDatastoreICM object.

Using separate datastore objects is the safest solution.
 


===========================================================
db2
===========================================================
1. SQL0332N 没有从源代码页 "1386" 至目标代码页 "819" 的转换。原因码是 "1"。

SQLSTATE=57017


在你的客户端运行如下命令:
db2cmd进入db2脚本环境
db2set db2codepage=1386
db2 terminate

2. DB2 restore命令
DB2 RESTORE DATABASE TMPDB FROM "D:tempTMPDB.0" TAKEN AT 20070201051358 TO "D:" INTO TEST WITH 2 BUFFERS BUFFER 1024

PARALLELISM 1 WITHOUT PROMPTING
3. db2support . -d <database_name> -g -s -o pmr75377_db2support.zip


 
===========================================================
SQLSTATE 消息,摘自于http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/core/r0sttmsg.htm
===========================================================
SQLSTATE 消息
本节列示 SQLSTATE 及其含义。SQLSTATE 是按类代码进行分组的;对于子代码,请参阅相应的表。

表 2. SQLSTATE 类代码 类
代码 
含义  要获得子代码,
参阅... 
00  完全成功完成  表 3 
01  警告  表 4 
02  无数据  表 5 
07  动态 SQL 错误  表 6 
08  连接异常  表 7 
09  触发操作异常  表 8 
0A  功能部件不受支持  表 9 
0D  目标类型规范无效  表 10 
0F  无效标记  表 11 
0K  RESIGNAL 语句无效  表 12 
20  找不到 CASE 语句的条件  表 13 
21  基数违例  表 14 
22  数据异常  表 15 
23  约束违例  表 16 
24  无效游标状态  表 17 
25  无效事务状态  表 18 
26  无效 SQL 语句标识  表 19 
28  无效权限规范  表 21 
2D  无效事务终止  表 22 
2E  无效连接名  表 23 
34  无效游标名  表 24 
36  游标灵敏度异常  表 25 
38  外部函数异常  表 26 
39  外部函数调用异常  表 27 
3B  SAVEPOINT 无效  表 28 
40  事务回滚  表 29 
42  语法错误或存取规则违例  表 30 
44  WITH CHECK OPTION 违例  表 31 
46  Java DDL  表 32 
51  无效应用程序状态  表 33 
53  无效操作数或不一致的规范  表 34 
54  超出 SQL 限制,或超出产品限制  表 35 
55  对象不处于先决条件状态  表 36 
56  其它 SQL 或产品错误  表 37 
57  资源不可用或操作员干预  表 38 
58  系统错误  表 39 

类代码 00 完全成功完成
表 3. 类代码 00:完全成功完成 SQLSTATE 值 
含义 
00000  操作执行成功,并且未产生任何类型的警告或异常情况。 

类代码 01 警告
表 4. 类代码 01:警告 SQLSTATE 值 
含义 
01002  发生 DISCONNECT 错误。 
01003  从列函数的自变量消去 NULL 值。 
01004  字符串值在指定给具有较短长度的另一字符串数据类型时被截断。 
01005  SQLDA 中的条目数不够。 
01007  未授予特权。 
0100C  从过程返回了一个或多个特殊结果集。 
0100D  关闭的游标已在链中的下一个结果集上重新打开。 
0100E  生成的过程大于允许的最大结果集数目。只有第一个整数结果集已经返回到调用者。 
01503  结果列数比提供的主机变量数大。 
01504  UPDATE 或 DELETE 语句不包括 WHERE 子句。 
01506  对 DATE 或 TIMESTAMP 值进行了调整,以更正算术运算得出的无效日期。 
01509  由于用户虚拟机中的存储器不够,取消游标的分块。 
01515  已为主机变量指定了一个空值,因为列的非空值不在主机变量的范围之内。 
01516  已忽略不可用的 WITH GRANT OPTION。 
01517  用替代字符替换不能转换的字符。 
01519  已为主机变量指定了一个空值,因为数字值超出范围。 
01524  列函数的结果不包括由算术表达式求值得出的空值。 
01526  隔离级别已升级。 
01527  SET 语句引用的专用寄存器在 AS 上不存在。 
01539  连接成功但只应使用 SBCS 字符。 
01543  已忽略重复约束。 
01545  未限定列名已解释为相关引用。 
01550  索引未创建,因为具有指定描述的索引已经存在。 
01560  忽略了一个冗余的 GRANT。 
01562  在数据库配置文件中的新日志路径(newlogpth)无效。 
01563  日志文件的当前路径(logpath)无效。日志文件路径被复位为缺省值。 
01564  已为主机变量指定了空值,因为发生了被零除的错误。 
01586  将引用结构中父表的约束设置为 OFF 已导致一个或多个派生表被自动置为检查暂挂状态 
01589  语句包含有冗余规范。 
01592  在引用 SOURCE 函数的 CREATE FUNCTION 语句中,或:
输入参数的长度、精度或小数位大于源函数相应参数的长度、精度或小数位;或
RETURNS 或 CAST FROM 参数的长度、精度或小数位比源函数的小;或
CREATE FUNCTION 语句中的 CAST FROM 参数的长度、精度或小数位比 RETURNS 参数的大。
运行期间可能发生截断(那时可能会引起错误)。 
01594  对于所有信息,SQLDA 内的条目数不够多(即没有足够的描述符返回相异名称)。 
01595  该视图已替换现有无效视图。 
01596  没有为基于长串数据类型的单值类型创建比较函数。 
01598  尝试激活活动的事件监视器,或尝试释放不活动的事件监视器。 
01599  忽略 REBIND 上的绑定选项。 
01602  优化级别已降低。 
01603  CHECK DATA 处理过程中发现约束违例,已将其移至异常表。 
01604  已经说明了 SQL 语句,但是未执行它。 
01605  递归公共表表达式可能包含无限循环。 
01606  节点或系统数据库目录是空的。 
01607  只读事务中节点的时间差超过定义的阈值。 
01609  生成的过程大于允许的最大结果集数目。只有第一个整数结果集已经返回到调用者。 
01610  从过程返回了一个或多个特殊结果集。 
01611  关闭的游标已在链中的下一个结果集上重新打开。 
01614  定位器数小于结果集数。 
01616  估计的 CPU 成本超出了资源限制。 
01618  再分发节点组是更改数据分区所必需的。 
01620  UNION ALL 的某些基本表可能是同一个表。 
01621  检索到的 LOB 值可能已更改。 
01622  语句成功完成,但在语句完成之后发生了系统错误。 
01623  忽略 DEGREE 的值。 
01625  模式名在 CURRENT PATH 中出现了多次。 
01626  数据库仅有一个活动的缓冲池。 
01627  DATALINK 值可能无效,因为该表处理协调暂挂或协调不可能的状态。 
01632  并发连接数超出了该产品的定义授权。 
01633  可能不能使用具体查询表来优化查询的处理。 
01636  数据库管理器一直未验证非增量数据的完整性。 
01637  未启用调试。 
01639  联合对象可能需要调用者具有对数据源对象的必要特权。 
01641  Datalink 类型属性限制结构化类型的使用。 
01642  对于最大的可能 USER 缺省值,列不足够长。 
01643  对 SQL 例程中 SQLSTATE 或 SQLCODE 变量的赋值可能会被覆盖,不会激活任何处理程序。 
01645  SQL 过程的可执行文件未保存在数据库目录中。 
01648  忽略了 COMPRESS 列属性,因为对表取消激活了 VALUE COMPRESSION。 
01649  缓冲池操作已经完成,但是直到下一次数据库重新启动才会生效。 
01650  索引和表统计信息不一致。 
01651  成功激活了事件监视器,但是某些监视信息可能丢失了。 
01652  由于语句上下文而忽略了隔离子句。 
01653  权限授予给 USER。因为权限名大于 8 个字节,所以不考虑组。 
01654  未启动缓冲池。 
01655  成功创建了事件监视器,但是至少有一个事件监视器目标表已存在。 
01657  缓冲池操作在下一次数据库重新启动后才会生效。 
01665  列名或参数名被截断。 
01667  可能不能使用视图来优化查询的处理。 
01669  由于远程目录与本地目录之间的模式不一致,因此,未彻底更新指定昵称的统计信息。 
01670  对新表来说,不存在缺省主表空间。 
01671  高速缓存的语句的环境与当前环境不同。将使用当前环境来重新优化指定的语句。 
01H51  “MQSeries 应用程序消息传递接口”消息被截断。 
01HXX  由用户定义的函数或外部过程 CALL 返回了有效警告 SQLSTAE。 

类代码 02 无数据
表 5. 类代码 02:无数据 SQLSTATE 值 
含义 
02000  发生下述异常之一:
SELECT INTO 语句或 INSERT 语句的子查询的结果为空表。
在搜索的 UPDATE 或 DELETE 语句内标识的行数为零。
在 FETCH 语句中引用的游标位置处于结果表最后一行之后。
 
02501  游标位置对于当前行的 FETCH 无效。 
02502  检测到删除或更新孔 

类代码 07 动态 SQL 错误
表 6. 类代码 07:动态 SQL 错误 SQLSTATE 值 
含义 
07001  对于参数标记的数目来说,主机变量的数目不正确。 
07002  调用参数列表或控制块无效。 
07003  在 EXECUTE 语句内标识的语句是一条选择语句,或未处于已预编译状态。 
07004  动态参数需要 USING 子句或 INTO 子句。 
07005  游标的语句名标识的是一个不能与游标关联的已预编译语句。 
07006  由于其数据类型的缘故不能使用某输入主机变量。 

类代码 08 连接异常
表 7. 类代码 08:连接异常 SQLSTATE 值 
含义 
08001  应用程序请求器不能建立连接。 
08002  连接已存在。 
08003  连接不存在。 
08004  应用程序服务器拒绝建立连接。 
08007  事务解析未知。 
08502  用 TWOPHASE 的 SYNCPOINT 运行的应用程序进程发出的 CONNECT 语句无效,因为无事务管理器可用。 
08504  当处理指定的路径重命名配置文件时遇到错误。 

类代码 09 触发操作异常
表 8. 类代码 09:触发操作异常 SQLSTATE 值 
含义 
09000  触发 SQL 语句失败。 

类代码 0A 不支持功能部件
表 9. 类代码 0A:不支持功能部件 SQLSTATE 值 
含义 
0A001  CONNECT 语句无效,因为进程不处于可连接状态。 
0A502  未对此数据库实例启用操作。 
0A503  由于潜在的数据不一致,不能编译联合插入、更新或删除操作。 

类代码 0D 目标类型规范无效
表 10. 类代码 0D:目标类型规范无效 SQLSTATE 值 
含义 
0D000  目标结构化数据类型规范是源结构化数据类型的正确子类型。 

类代码 0F 无效标记
表 11. 类代码 OF:无效标记 SQLSTATE 值 
含义 
0F001  LOB 标记变量当前不表示任何值。 

类代码 0K RESIGNAL 语句无效
表 12. 类代码 0K:RESIGNAL 语句无效 SQLSTATE 值 
含义 
0K000  RESIGNAL 语句不在处理程序中。 

类代码 20 找不到 CASE 语句的条件
表 13. 类代码 20:找不到 Case 语句的条件 SQLSTATE 值 
含义 
20000  找不到 CASE 语句的条件。 

类代码 21 基数违例
表 14. 类代码 21:基数违例 SQLSTATE 值 
含义 
21000  SELECT INTO 的结果是一个多行的结果表,或者,基本谓词的子查询结果为多个值。 
21501  对自引用表进行多行 INSERT 是无效的。 
21502  主键的多行 UPDATE 是无效的。 
21504  从删除规则为 RESTRICT 或 SET NULL 的自引用表进行多行 DELETE 是无效的。 
21505  行函数返回的内容不能超过一行。  
21506  表的同一行不能是多个更新、删除或插入操作的目标。 

类代码 22 数据异常
表 15. 类代码22:数据异常 SQLSTATE 值 
含义 
22001  字符数据,发生右截断;例如,更新或插入值对于列来说太长(字符串),或者日期时间值由于太小而不能赋给主机变量。 
22002  检测到空值或缺少指示符参数;例如,不能将空值赋给主机变量,因为没有指定指示符变量。 
22003  数字值超出范围。 
22004  不能从定义为 PARAMETER STYLE GENERAL 的过程或者从用非空自变量调用的类型保留方法中返回空值。 
22007  检测到无效的日期时间格式;即指定了无效的字符串表示法或值。 
22008  发生日期时间字段溢出;例如,对日期或时间戳记算术运算的结果不在有效日期范围之内。 
2200G  大多数特定类型都不匹配。 
22011  发生子字符串错误;例如,SUBSTR 的自变量超出范围。 
22012  用零作除数是无效的。 
22018  对于 CAST、DECIMAL、FLOAT、或 INTEGER 标量函数,字符值是无效的。 
22019  LIKE 谓词有无效转义字符。 
22021  某字符不在编码字符集中。 
22024  以 NUL 结束的输入主机变量或参数不包含 NUL。 
22025  LIKE 谓词字符串模式包含无效的转义字符。 
2202D  配合变异方法使用了空实例。 
2202H  在 TABLESAMPLE 子句中指定的样本大小无效。 
22501  变长字符串的长度控制字段为负值或大于最大值。 
22504  混合数据值是无效的。 
22506  对日期时间专用寄存器的引用无效,因为 TOD 时钟发生故障或操作系统时区参数超出范围。 
22522  CCSID 值根本无效,对数据类型或子类型无效,或对编码方案无效。 
22526  键变换函数没有生成任何行或生成了重复的行。 
22527  对多行 INSERT 操作检测到了无效的输入数据。 

类代码 23 约束违例
表 16. 类代码 23:约束违例 SQLSTATE 值 
含义 
23001  RESTRICT 更新或删除规则防止父键被更新或删除。 
23502  插入或更新值为空,但该列不能包含空值。 
23503  外键的插入或更新值无效。 
23504  NO ACTION 更新或删除规则防止父键被更新或删除。 
23505  发生由唯一索引或唯一约束强加的约束违例。 
23510  使用由 RLST 表强加的命令时发生约束违例。 
23511  不能删除父行,因为检查约束限制该删除。 
23512  不能添加检查约束,因为该表含有不满足约束定义的行。 
23513  INSERT 或 UPDATE 的结果行不符合检查约束定义。 
23514  检查数据处理中发现约束违例。 
23515  不能建立唯一索引,或不能添加唯一约束,因为该表包含指定键的重复值。 
23520  不能定义外键,因为其所有的值都不同于父表的父键。 
23521  对目录表的更新违反了内部约束。 
23522  标识列值的范围或者序列用完。 
23524  UNION ALL 视图内的无效行移动。 
23527  联合数据源中发生了完整性约束违例。 

类代码 24 无效游标状态
表 17. 类代码 24:无效游标状态 SQLSTATE 值 
含义 
24501  标识的游标未打开。 
24502  在 OPEN 语句中标识的游标已经打开。 
24504  在 UPDATE、DELETE、SET 或 GET 语句中标识的游标未定位在行上。 
24506  在 PREPARE 中标识的语句是一个打开游标语句。 
24510  对一个删除孔或更新孔尝试了 UPDATE 或 DELETE 操作。 
24512  结果表与基本表不一致。 
24513  不允许 FETCH NEXT、PRIOR、CURRENT 或 RELATIVE,原因是游标位置未知。 
24514  先前的错误已禁用此游标。 
24516  已对结果集指定了一个游标。 
24517  外部函数或方法将游标保持为打开。 

类代码 25 无效事务状态
表 18. 类代码 25:无效事务状态 SQLSTATE 值 
含义 
25000  插入、更新或删除操作在指定它的上下文中无效。 
25001  该语句只允许作为工作单元的第一个语句。 
25501  该语句只允许作为工作单元的第一个语句。 
25502  操作在单个事务中不能多次出现。 

类代码 26 无效 SQL 语句标识
表 19. 类代码 26:无效 SQL 语句标识 SQLSTATE 值 
含义 
26501  标识的语句不存在。 

类代码 27 触发的数据更改违例
表 20. 类代码 27:触发的数据更改违例 SQLSTATE 值  含义 
27000  已尝试通过约束或触发器来修改 MERGE 语句的目标表。 

类代码 28 无效权限规范
表 21. 类代码 28:无效权限规范 SQLSTATE 值 
含义 
28000  权限名称无效。 

类代码 2D 无效事务终止
表 22. 类代码 2D:无效事务终止 SQLSTATE 值 
含义 
2D521  SQL COMMIT 或 ROLLBACK 在当前操作环境中无效。 
2D522  ATOMIC 复合语句中不允许 COMMIT 和 ROLLBACK。 
2D528  动态 COMMIT 对于应用程序执行环境无效。 
2D529  动态 ROLLBACK 对于应用程序执行环境无效。 

类代码 2E 无效连接名
表 23. 类代码 2E:无效连接名 SQLSTATE 值 
含义 
2E000  连接名无效。 

类代码 34 无效游标名
表 24. 类代码 34:无效游标名 SQLSTATE 值 
含义 
34000  游标名无效。 

类代码 36 无效游标规范
表 25. 类代码 36:无效游标规范 SQLSTATE 值 
含义 
36001  不能为指定的选择语句定义 SENSITIVE 游标。 

类代码 38 外部函数异常
表 26. 类代码 38:外部函数异常 SQLSTATE 值 
含义 
38XXX  外部例程或触发器返回有效错误 SQLSTATE。 
38001  不允许外部例程执行 SQL 语句。 
38002  例程尝试修改数据,但例程未定义为 MODIFIES SQL DATA。 
38003  例程中不允许该语句。 
38004  例程尝试读取数据,但例程未定义为 READS SQL DATA。 
38501  (使用 SIMPLE CALL 或 SIMPLE CALL WITH NULLS 调用约定)调用用户定义的函数、外部过程或触发器时出错。 
38502  不允许外部函数执行 SQL 语句。 
38503  用户定义的函数异常终止(abend)。 
38504  用户定义的函数已被用户中断,以停止可能的循环条件。 
38505  FINAL CALL 上的例程中不允许 SQL 语句。 
38506  函数因来自 OLE 数据库提供程序的错误而失败。 
38552  SYSFUN 模式(由 IBM 提供)中的函数已异常终止。
可以在消息正文中找到下列原因码之一:

01
数字值超出范围
02
被零除
03
算术溢出或下溢
04
日期格式无效
05
时间格式无效
06
时间戳记格式无效
07
时间戳记持续时间的字符表示法无效
08
间隔类型无效(必须是 1、2、4、8、16、32、64、128、256 其中之一)
09
字符串太长
10
字符串函数中的长度或位置超出范围
11
浮点数的字符表示法无效 
38553  系统模式中的例程已因错误而终止。 
38H01  MQSeries 函数未能初始化。 
38H02  MQSeries 的“应用程序消息传递接口”未能终止会话。 
38H03  MQSeries 的“应用程序消息传递接口”未能正确地处理消息。 
38H04  MQSeries 的“应用程序消息传递接口”未能发送消息。 
38H05  MQSeries 的“应用程序消息传递接口”未能读取/接收消息。 
38H06  MQSeries 的“应用程序消息传递接口”预订(不预订)请求失败。 
38H07  MQSeries 的“应用程序消息传递接口”未能落实工作单元。 
38H08  MQSeries 的“应用程序消息传递接口”策略错误。 
38H09  MQSeries XA(两阶段落实)API 调用错误。 
38H0A  MQSeries 的“应用程序消息传递接口”未能回滚工作单元。 

类代码 39 外部函数调用异常
表 27. 类代码 39:外部函数调用异常 SQLSTATE 值 
含义 
39001  用户定义的函数已返回无效 SQLSTATE。 
39004  不允许 IN 或 INOUT 自变量为空值。 
39501  与自变量相关联的 eye-catcher(引人注目的事物)已被修改。 

类代码 3B SAVEPOINT 无效
表 28. 类代码 3B:SAVEPOINT 无效 SQLSTATE 值 
含义 
3B001  保存点无效。 
3B002  已经达到最大保存点数目。 
3B501  检测到重复的保存点名。 
3B502  指定了 RELEASE 或 ROLLBACK TO SAVEPOINT,但是保存点不存在。 
3B503  在触发器或全局事务中不允许 SAVEPOINT、 RELEASE SAVEPOINT 或 ROLLBACK TO SAVEPOINT。 

类代码 40 事务回滚
表 29. 类代码 40:事务回滚 SQLSTATE 值 
含义 
40001  发生了伴随自动回滚的超时或死锁。 
40003  语句完整性未知。 
40504  由于系统错误导致工作单元被回滚。 
40506  由于 SQL 错误,当前事务已回滚。 
40507  由于创建索引时发生故障,因此当前事务已回滚。 

类代码 42 语法错误或存取规则违例
表 30. 类代码 42:语法错误或存取规则违例 SQLSTATE 值 
含义 
42501  授权标识不具有对标识对象执行指定操作的特权。 
42502  授权标识不具有执行指定操作的特权。 
42504  指定的特权不能从指定的权限名称撤销。 
42506  发生所有者授权失败。 
42508  不能将指定的数据库特权授予 PUBLIC。 
42509  因为 STATICRULES 选项而未授权 SQL 语句。 
42511  未能检索 DATALINK 值。 
42601  字符、标记或子句无效或丢失。 
42602  检测到名称中有无效字符。 
42603  检测到未终止的字符串常量。 
42604  检测到无效数字或字符串常量。 
42605  为标量函数指定的自变量数无效。 
42606  检测到无效十六进制常数。 
42607  列函数的操作数无效。 
42608  在 VALUES 中使用 NULL 或 DEFAULT 是无效的。 
42609  运算符或谓词的所有操作数都是参数标记。 
42610  不允许参数标记。 
42611  列或自变量定义无效。 
42612  语句字符串是一条 SQL 语句,它在它所出现的上下文中是不可接受的。 
42613  子句互斥。 
42614  重复关键字无效。 
42615  检测到无效备用项。 
42616  指定了无效的选项。 
42617  语句字符串是空白或空的。 
42618  不允许主机变量。 
42620  对 UPDATE 子句指定了只读 SCROLL。 
42621  检查约束无效。 
42622  名称或标号太长。 
42623  不能指定 DEFAULT 子句。 
42625  CASE 表达式无效。 
42627  必须在使用 EXPRESSION AS 子句的谓词规范之前指定 RETURNS 子句。 
42628  在变换定义中多次定义了 TO SQL 或 FROM SQL 变换函数。 
42629  必须为 SQL 例程指定参数名。 
42630  在嵌套复合语句中一定不能存在 SQLSTATE 或 SQLCODE 变量声明。 
42631  SQL 函数或方法中的 RETURN 语句必须包括返回值。 
42634  XML 名称无效。 
42635  XML 名称空间前缀无效。 
42701  在插入或更新操作或 SET 转换变量语句中检测到重复列名。 
42702  由于名称重复,列引用有歧义。 
42703  检测到一个未定义的列、属性或参数名。  
42704  检测到未定义的对象或约束名。 
42705  检测到未定义的服务器名。 
42707  ORDER BY 内的列名不标识结果表中的列。 
42709  在 PRIMARY、UNIQUE、或 FOREIGN KEY 子句中检测到重复列名。 
42710  检测到重复的对象或约束名。 
42711  在对象定义或 ALTER 语句中检测到重复列名或属性名。 
42712  在 FROM 子句中检测到重复的表标志符。 
42713  在对象列表中检测到重复对象。 
42720  在节点目录内未找到远程数据库的节点名。 
42723  模式中已经存在带有相同特征符的函数。 
42724  不能存取用于用户定义的函数或过程的外部程序。 
42725  函数或方法是直接引用的(不是通过特征符或者通过特定实例名),但是存在该函数或方法的多个特定实例。 
42726  检测到已命名的派生表的重复名称。 
42727  对新表来说,不存在缺省主表空间。 
42728  在节点组定义中检测到重复节点。 
42729  节点未定义。 
42730  容器名已由另一表空间使用。 
42731  容器名已由该表空间使用。 
42732  在 SET CURRENT PATH 语句中检测到重复的模式名。 
42734  检测到重复的参数名、SQL 变量名、游标名、条件名或标号。 
42735  对缓冲池,未定义表空间的节点组。 
42736  在 LEAVE 语句上指定的标号找不到或无效。 
42737  未定义在处理程序中指定的条件。 
42738  在 FOR 语句的 DECLARE CURSOR 语句中指定了重复的列名或未命名的列。 
42739  检测到重复的变换。 
42740  未找到指定类型的变换。未删除任何变换。 
42741  未对数据类型定义变换组。 
42742  类型表或带类型视图层次结构中已存在同类子表或子视图。 
42743  在索引扩展名中未找到搜索方法。  
42744  在变换组中未定义 TO SQL 或 FROM SQL 变换函数。 
42745  例程将用现有方法定义覆盖关系。 
42746  在同一类型层次结构中,方法名不能与结构化类型名相同。 
42748  存储器路径对于数据库来说已存在或被指定多次。 
42802  插入或更新值的数目与列数不相同。 
42803  在 SELECT 或 HAVING 子句中的列引用无效,因为它不是分组列;或者在 GROUP BY 子句中的列引用无效。 
42804  CASE 表达式中的结果表达式不兼容。 
42805  ORDER BY 子句中的整数不标识结果表中的列。 
42806  不能将某值赋予某主机变量, 因为数据类型不兼容。 
42807  对该对象不允许执行 INSERT、UPDATE 或 DELETE。 
42808  插入或更新操作中标识的列不可更新。 
42809  标识的对象不是语句所应用的对象类型。 
42810  FOREIGN KEY 子句中没有标识基本表。 
42811  指定的列数与 SELECT 子句中的列数不相同。 
42813  WITH CHECK OPTION 不能用于指定的视图。 
42815  数据类型、长度、小数位、值或 CCSID 无效。 
42816  表达式中的日期时间值或持续时间无效。 
42818  运算符或函数的操作数不兼容。 
42819  算术运算的操作数或需要数字的函数的操作数不是数字。 
42820  数字常数太长,或其值不在该数据类型取值范围内。 
42821  更新或插入值与列不兼容。 
42823  从仅允许一列的子查询中返回了多列。 
42824  LIKE 的操作数不是字符串,或第一个操作数不是列。 
42825  UNION、INTERSECT、EXCEPT 或 VALUES 的行没有兼容列。 
42826  UNION、INTERSECT、EXCEPT 或 VALUES 的行的列数不相同。 
42827  UPDATE 或 DELETE 中标识的表与游标指定的表不相同。 
42828  由 UPDATE 或 DELETE 语句的游标指定的表不能修改,或该游标是只读游标。 
42829  FOR UPDATE OF 无效,因为由该游标指定的结果表不能修改。 
42830  外键不符合父键的描述。 
42831  主键或唯一键列不允许空值。 
42832  不允许对系统对象执行该操作。 
42834  不能指定 SET NULL,因为不能对外键的任何列指定空值。 
42835  在已命名的派生表之间不能指定循环引用。 
42836  命名的递归派生表的规范无效。 
42837  不能改变该列,原因是它的属性与当前的列属性不兼容。 
42838  检测到表空间的无效使用。 
42839  索引和长列不能处于与该表独立的表空间内。 
42840  检测到 AS CAST 选项的无效使用。 
42841  参数标记不能是用户定义的类型或引用类型。 
42842  列定义无效,因为指定的选项与列描述不一致。 
42845  检测到 VARIANT 或 EXTERNAL ACTION 函数的无效使用。 
42846  不支持从源类型到目标类型的强制类型转型。 
42852  在 GRANT 或 REVOKE 中指定的特权无效或不一致。(例如,视图上的 GRANT ALTER。) 
42853  指定了选项的两个备用项,或者同一选项被指定了多次。 
42854  选择列表中的结果列数据类型与在带类型视图或具体查询表定义中定义的类型不兼容。 
42855  不允许对此主机变量指定 LOB。此游标的 LOB 值的所有访存的目标主机变量必须是定位器或 LOB 变量。 
42858  不能将该操作应用于指定对象。 
42863  检测到 REXX 中有未定义的主机变量。 
42866  在 CREATE FUNCTION 语句的 CAST FROM 子句中的 RETURNS 子句的数据类型对于有源函数或函数体中的 RETURN 语句返回的数据类型

不适合。 
42867  指定了冲突的选项。 
42872  FETCH 语句子句与游标定义不兼容。 
42875  要在 CREATE SCHEMA 中创建的对象的限定符必须与模式名相同。 
42877  不能限定该列名。 
42878  无效的函数或过程名称与 EXTERNAL 关键字一起使用。 
42879  在 CREATE FUNCTION 语句中一个或多个输入参数的数据类型对于源函数中相应的数据类型不适合。 
42880  CAST TO 和 CAST FROM 数据类型不兼容,或总会导致固定字符串截断。 
42881  使用基于行的函数无效。 
42882  特定实例名限定符与函数名限定符不相同。 
42883  找不到具有相匹配特征符的函数或方法。 
42884  找不到具有指定名称和兼容自变量的任何例程。 
42885  在 CREATE FUNCTION 语句中指定的输入参数数目与 SOURCE 子句中命名的函数所提供的参数数目不匹配。 
42886  IN、OUT 或 INOUT 参数属性不匹配。 
428

paodekuai 发表于:2006.11.14 11:25 ::分类: ( DB2 ) ::阅读:(1440次) :: 评论 (0)
===========================================================
DB2常用命令大全
===========================================================
1. 建立数据库DB2_GCB
CREATE DATABASE DB2_GCB ON G: ALIAS DB2_GCB
USING CODESET GBK TERRITORY CN COLLATE USING SYSTEM DFT_EXTENT_SZ 32
2. 连接数据库
connect to sample1 user db2admin using 8301206
3. 建立别名
create alias db2admin.tables for sysstat.tables;
CREATE ALIAS DB2ADMIN.VIEWS FOR SYSCAT.VIEWS
create alias db2admin.columns for syscat.columns;
create alias guest.columns for syscat.columns;
4. 建 立表
create table zjt_tables as
(select * from tables) definition only;
create table zjt_views as
(select * from views) definition only;
5. 插入记录
insert into zjt_tables select * from tables;
insert into zjt_views select * from views;
6. 建立视图
create view V_zjt_tables as select tabschema,tabname from zjt_tables;
7. 建立触发器
CREATE TRIGGER zjt_tables_del
AFTER DELETE ON zjt_tables
REFERENCING OLD AS O
FOR EACH ROW MODE DB2SQL
Insert into zjt_tables1 values(substr(o.tabschema,1,8),substr(o.tabname,1,10))
8. 建立唯一性索引
CREATE UNIQUE INDEX I_ztables_tabname
ON zjt_tables(tabname);
9. 查看表
select tabname from tables
where tabname='ZJT_TABLES';
10. 查看列
select SUBSTR(COLNAME,1,20) as 列名,TYPENAME as 类型,LENGTH as 长度
from columns
where tabname='ZJT_TABLES';
11. 查看表结构
db2 describe table user1.department
db2 describe select * from user.tables
12. 查看表的索引
db2 describe indexes for table user1.department
13. 查看视图
select viewname from views
where viewname='V_ZJT_TABLES';
14. 查看索引
select indname from indexes
where indname='I_ZTABLES_TABNAME';
15. 查看存贮过程
SELECT SUBSTR(PROCSCHEMA,1,15),SUBSTR(PROCNAME,1,15)
FROM SYSCAT.PROCEDURES;
16. 类型转换(cast)
ip datatype:varchar
select cast(ip as integer)+50 from log_comm_failed
17. 重新连接
connect reset
18. 中断数据库连接
disconnect db2_gcb
19. view application
LIST APPLICATION;
20. kill application
FORCE APPLICATION(0);
db2 force applications all (强迫所有应用程序从数据库断开)
21. lock table
lock table test in exclusive mode
22. 共享
lock table test in share mode
23. 显示当前用户所有表
list tables
24. 列出所有的系统表
list tables for system
 25. 显示当前活动数据库
list active databases
26. 查看命令选项
list command options
27. 系统数据库目录
LIST DATABASE DIRECTORY
28. 表空间
list tablespaces
29. 表空间容器
LIST TABLESPACE CONTAINERS
 

阅读更多

没有更多推荐了,返回首页