<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Li Guoliang &#187; SQL</title>
	<atom:link href="http://liguoliang.com/tag/sql/feed/" rel="self" type="application/rss+xml" />
	<link>http://liguoliang.com</link>
	<description>ActionScript Flex Java JEE PHP...</description>
	<lastBuildDate>Mon, 21 May 2012 17:04:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Oracle: 扩充TableSpace语句</title>
		<link>http://liguoliang.com/2011/oracle-enlarge-tablespace/</link>
		<comments>http://liguoliang.com/2011/oracle-enlarge-tablespace/#comments</comments>
		<pubDate>Sun, 13 Nov 2011 05:31:38 +0000</pubDate>
		<dc:creator>Guoliang</dc:creator>
				<category><![CDATA[DB]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://liguoliang.com/?p=2173</guid>
		<description><![CDATA[Step1: check current status and get all file path
<code>SELECT
B.FILE_NAME FILENAME,
B.TABLESPACE_NAME TABLESPACENAME,
B.BYTES/1024/1024 SIZE_MB,
(B.BYTES-S</code><p class='read-more'><a href='http://liguoliang.com/2011/oracle-enlarge-tablespace/'>More...</a></p><p><p>

----------Post from: <a href="http://liguoliang.com">@LiGuoliang.com, 欢迎回来~</a>----------</p></p>
]]></description>
			<content:encoded><![CDATA[<h2>Step1: check current status and get all file path<br />
<code>SELECT<br />
B.FILE_NAME FILENAME,<br />
B.TABLESPACE_NAME TABLESPACENAME,<br />
B.BYTES/1024/1024 SIZE_MB,<br />
(B.BYTES-SUM(NVL(A.BYTES,0)))/1024/1024 USED_MB,<br />
substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5) Percentage<br />
from dba_free_space a,dba_data_files b<br />
where a.file_id=b.file_id<br />
GROUP BY B.TABLESPACE_NAME,B.FILE_NAME,B.BYTES<br />
order by b.tablespace_name;</code></h2>
<h2>Step2: enlarge table space file<br />
<code>alter database datafile 'C:\ORACLEXE\APP\ORACLE\ORADATA\XX\USERS.DBF' resize 2000m;</code></h2>
<p><p>

----------Post from: <a href="http://liguoliang.com">@LiGuoliang.com, 欢迎回来~</a>----------</p></p>
]]></content:encoded>
			<wfw:commentRss>http://liguoliang.com/2011/oracle-enlarge-tablespace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DB2 V9.7 Rename Column注意事项</title>
		<link>http://liguoliang.com/2010/db2-alter-table-rename-column/</link>
		<comments>http://liguoliang.com/2010/db2-alter-table-rename-column/#comments</comments>
		<pubDate>Wed, 06 Oct 2010 02:01:30 +0000</pubDate>
		<dc:creator>Guoliang</dc:creator>
				<category><![CDATA[DB]]></category>
		<category><![CDATA[DB2]]></category>
		<category><![CDATA[RENAME COLUMN]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://liguoliang.com/2010/db2-alter-table-rename-column/</guid>
		<description><![CDATA[DB2需要呼叫存储过程ALTOBJ存储过程以完成重命名. 该过程将重建Table, 并恢复就有的PrimaryKey, Index信息及Table的内容.
在Rename带有Index的Column时需要额外注意, 可能先DROP掉Index, 在重建完毕后再CREATE.<p class='read-more'><a href='http://liguoliang.com/2010/db2-alter-table-rename-column/'></a></p><p><p>

----------Post from: <a href="http://liguoliang.com">@LiGuoliang.com, 欢迎回来~</a>----------</p></p>
]]></description>
			<content:encoded><![CDATA[<p>DB2需要呼叫存储过程ALTOBJ存储过程以完成重命名. 该过程将重建Table, 并恢复就有的PrimaryKey, Index信息及Table的内容.    <br />在Rename带有Index的Column时需要额外注意, 可能先DROP掉Index, 在重建完毕后再CREATE.</p>
<p><strong>问题描述:</strong></p>
<p>通常情况下, 使用UI或SQL均可顺利执行该过程, 但在Rename带有Index的Column时, 会产生错误:    <br />原因是Table重建完毕后, DB2试图恢复之前的Index &#8211; 但此时使用了Rename前的ColumnName, 于是因为找不到Column而出错.</p>
<p>如: Rename Table中的 Column &quot;NAME&quot;为&quot;NAME2&quot;的SQL:</p>
<p>CALL SYSPROC.ALTOBJ ( &#8216;APPLY_CONTINUE_ON_ERROR&#8217;, &#8216;CREATE TABLE ADMINISTRATOR.STU ( ID INTEGER&#160; NOT NULL&#160; GENERATED ALWAYS AS IDENTITY (START WITH 0, INCREMENT BY 1, CACHE 20) , NAME2 VARCHAR (64)&#160; NOT NULL&#160;&#160; ) IN USERSPACE1 &#8216;, -1, ? );</p>
<p>AlertTable UI提示信息:    <br /><a href="http://liguoliang.com/wp-content/uploads/2010/10/image.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://liguoliang.com/wp-content/uploads/2010/10/image_thumb.png" width="399" height="271" /></a>     <br /><a href="http://liguoliang.com/wp-content/uploads/2010/10/image1.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://liguoliang.com/wp-content/uploads/2010/10/image_thumb1.png" width="451" height="484" /></a> </p>
<p><strong>解决方法:</strong></p>
<p>1. 在进行Rename之前, 先Drop掉Column相关的Index.    <br />2. 进行Rename操作     <br />3. 恢复之前创建的Index &#8211; 注意使用新的Column名称创建</p>
<p>该方法适用于UI手工操作, 也适用于代码编写.</p>
<p><p>

----------Post from: <a href="http://liguoliang.com">@LiGuoliang.com, 欢迎回来~</a>----------</p></p>
]]></content:encoded>
			<wfw:commentRss>http://liguoliang.com/2010/db2-alter-table-rename-column/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DB2 Derby Paged Select SQL分页查询语句</title>
		<link>http://liguoliang.com/2010/db2-derby-paged-select-sql/</link>
		<comments>http://liguoliang.com/2010/db2-derby-paged-select-sql/#comments</comments>
		<pubDate>Tue, 05 Oct 2010 13:50:30 +0000</pubDate>
		<dc:creator>Guoliang</dc:creator>
				<category><![CDATA[DB]]></category>
		<category><![CDATA[DB2]]></category>
		<category><![CDATA[Derby]]></category>
		<category><![CDATA[Paged Select]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://liguoliang.com/2010/db2-derby-paged-select-sql/</guid>
		<description><![CDATA[DB2, Derby 分页查询语句<p class='read-more'><a href='http://liguoliang.com/2010/db2-derby-paged-select-sql/'></a></p><p><p>

----------Post from: <a href="http://liguoliang.com">@LiGuoliang.com, 欢迎回来~</a>----------</p></p>
]]></description>
			<content:encoded><![CDATA[<h3>DB2 Paged Select SQL 分页:</h3>
<p>分页举例:   <br />SELECT * FROM (    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; SELECT&#160; <em>DEPT.ID, DEPT.MGRNO</em>, <strong>ROWNUMBER() OVER (ORDER BY DEPT.ID) AS NS </strong>FROM DEPT WHERE&#160;&#160;&#160;&#160;&#160; DEPT.MGRNO &gt; 0    <br />&#160; ) AS TEMP WHERE <strong>TEMP.NS BETWEEN 1 and 5;</strong></p>
<p>See: </p>
<p>1. API: <a title="http://www.ibm.com/developerworks/data/library/techarticle/0307balani/0307balani.html" href="http://www.ibm.com/developerworks/data/library/techarticle/0307balani/0307balani.html">http://www.ibm.com/developerworks/data/library/techarticle/0307balani/0307balani.html</a>    <br />2. <a href="http://www.blogjava.net/sxyx2008/archive/2010/06/04/322739.html">db2分页sql语法</a>    <br />3. <a href="http://andy632.javaeye.com/blog/228485" target="_blank">db2排序rownumber函数讨论</a>    <br />4. <a href="http://hi.baidu.com/zhy65991/blog/item/d465ef1e83f3a5f9e1fe0b17.html" target="_blank">Oracle, DB2 及 MySQL 分页查询写法</a></p>
<h3>Derby Paged Select SQL 分页语句:</h3>
<p>SELECT * FROM T ORDER BY I OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY</p>
<p>See: Derby 10.4之后开始支持 <a href="http://db.apache.org/derby/docs/10.5/ref/rrefsqljoffsetfetch.html">http://db.apache.org/derby/docs/10.5/ref/rrefsqljoffsetfetch.html</a></p>
<p><p>

----------Post from: <a href="http://liguoliang.com">@LiGuoliang.com, 欢迎回来~</a>----------</p></p>
]]></content:encoded>
			<wfw:commentRss>http://liguoliang.com/2010/db2-derby-paged-select-sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DB2 Alter 增加自增列 Add AutoIncrement Column</title>
		<link>http://liguoliang.com/2010/db2-add-autoincrement-column/</link>
		<comments>http://liguoliang.com/2010/db2-add-autoincrement-column/#comments</comments>
		<pubDate>Tue, 05 Oct 2010 13:17:04 +0000</pubDate>
		<dc:creator>Guoliang</dc:creator>
				<category><![CDATA[DB]]></category>
		<category><![CDATA[AUTO INCREMENT]]></category>
		<category><![CDATA[DB2]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://liguoliang.com/2010/db2-add-autoincrement-column/</guid>
		<description><![CDATA[<p>ALTER TABLE TABLE2 ALTER COLUMN ID2 DROP DEFAULT SET GENERATED AS IDENTITY ( START WITH 0 INCREMENT BY 1 NO CACHE ) ;</p>
<p> </p><p class='read-more'><a href='http://liguoliang.com/2010/db2-add-autoincrement-column/'>More...</a></p><p><p>

----------Post from: <a href="http://liguoliang.com">@LiGuoliang.com, 欢迎回来~</a>----------</p></p>
]]></description>
			<content:encoded><![CDATA[<p>ALTER TABLE TABLE2 ALTER COLUMN ID2 DROP DEFAULT SET GENERATED AS IDENTITY ( START WITH 0 INCREMENT BY 1 NO CACHE ) ;</p>
<p> <span id="more-1613"></span>
<p> 多于一个时报错:    <br />SQL0372N&#160; A column with data type or attribute ROWID, IDENTITY, security label, or row change timestamp can only be specified once for a table.</p>
<p> 【俊哥儿张】生成列和标识列 实例详解 <a href="http://www.itpub.net/thread-1093099-1-1.html">http://www.itpub.net/thread-1093099-1-1.html</a></p>
<h5><a href="http://luciesfly.javaeye.com/blog/682213">DB2修改表中一列为自动增长主键的方法</a></h5>
<h3>DB2的自增列 标识列</h3>
<p> <a href="http://blog.csdn.net/ben0133/archive/2010/09/03/5861924.aspx">http://blog.csdn.net/ben0133/archive/2010/09/03/5861924.aspx</a></p>
<p><p>

----------Post from: <a href="http://liguoliang.com">@LiGuoliang.com, 欢迎回来~</a>----------</p></p>
]]></content:encoded>
			<wfw:commentRss>http://liguoliang.com/2010/db2-add-autoincrement-column/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DB2 PrimaryKey 主键操作SQL总结</title>
		<link>http://liguoliang.com/2010/db2-primary-key-sql/</link>
		<comments>http://liguoliang.com/2010/db2-primary-key-sql/#comments</comments>
		<pubDate>Tue, 05 Oct 2010 13:06:50 +0000</pubDate>
		<dc:creator>Guoliang</dc:creator>
				<category><![CDATA[DB]]></category>
		<category><![CDATA[DB2]]></category>
		<category><![CDATA[Primary key]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://liguoliang.com/2010/db2-primary-key-sql/</guid>
		<description><![CDATA[1. ADD PRIMARY KEY 增加主键
ALTER TABLE <em>EMPLOYEE</em> ADD PRIMARY KEY (<em>EMPLOYEE_ID, ORGNO</em>);
2. DROP PRIMARY KEY 删除主键
ALTER TABLE <em>EMPLOYEE</em> DROP PRIMARY KEY
3. S<p class='read-more'><a href='http://liguoliang.com/2010/db2-primary-key-sql/'>More...</a></p><p><p>

----------Post from: <a href="http://liguoliang.com">@LiGuoliang.com, 欢迎回来~</a>----------</p></p>
]]></description>
			<content:encoded><![CDATA[<h3>1. ADD PRIMARY KEY 增加主键</h3>
<p>ALTER TABLE <em>EMPLOYEE</em> ADD PRIMARY KEY (<em>EMPLOYEE_ID, ORGNO</em>);</p>
<h3>2. DROP PRIMARY KEY 删除主键</h3>
<p>ALTER TABLE <em>EMPLOYEE</em> DROP PRIMARY KEY</p>
<h3>3. SET AUTOINCREMENT 设置自增</h3>
<p>ALTER TABLE <em>TB2 </em>ALTER COLUMN ID (<u>DROP DEFAULT</u>) SET GENERATED AS IDENTITY ( START WITH 0 INCREMENT BY 1 NO CACHE ) ;</p>
<p>DROP DEFATULT: 如果之前已有DEFAULT值时使用.</p>
<p><p>

----------Post from: <a href="http://liguoliang.com">@LiGuoliang.com, 欢迎回来~</a>----------</p></p>
]]></content:encoded>
			<wfw:commentRss>http://liguoliang.com/2010/db2-primary-key-sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DB2 Index 索引操作SQL</title>
		<link>http://liguoliang.com/2010/index-sql-db2/</link>
		<comments>http://liguoliang.com/2010/index-sql-db2/#comments</comments>
		<pubDate>Tue, 05 Oct 2010 12:15:15 +0000</pubDate>
		<dc:creator>Guoliang</dc:creator>
				<category><![CDATA[DB]]></category>
		<category><![CDATA[DB2]]></category>
		<category><![CDATA[Index]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://liguoliang.com/2010/index-sql-db2/</guid>
		<description><![CDATA[以下罗列与Index有关操作的SQL, 如: List/CREATE/DROP 等操作.
1. List Indexes 获得所有索引
SELECT * FROM SYSIBM.SYSINDEXES WHERE CREATOR NOT LIKE &#8216;SYS%&#8217; AND TBNA<p class='read-more'><a href='http://liguoliang.com/2010/index-sql-db2/'>More...</a></p><p><p>

----------Post from: <a href="http://liguoliang.com">@LiGuoliang.com, 欢迎回来~</a>----------</p></p>
]]></description>
			<content:encoded><![CDATA[<p>以下罗列与Index有关操作的SQL, 如: List/CREATE/DROP 等操作.</p>
<h3>1. List Indexes 获得所有索引</h3>
<p>SELECT * FROM SYSIBM.SYSINDEXES WHERE CREATOR NOT LIKE &#8216;SYS%&#8217; AND TBNAME=&#8217;<em>tablename</em>&#8216;;</p>
<h3>2. CREATE INDEX 创建索引</h3>
<p>CREATE INDEX <em>EMPLOYEE_EMPLOYEE_ID_IDX</em> ON EMPLOYEE(<em>EMPLOYEE_ID</em>);     <br />CREATE UNIQUE INDEX <em>EMPLOYEE_NAME_IDX</em> ON EMPLOYEE(<em>NAME</em>);</p>
<h3>3. DROP INDEX 删除索引</h3>
<p>DROP INDEX <em>EMPLOYEE_ORGNO_IDX;</em></p>
<p><p>

----------Post from: <a href="http://liguoliang.com">@LiGuoliang.com, 欢迎回来~</a>----------</p></p>
]]></content:encoded>
			<wfw:commentRss>http://liguoliang.com/2010/index-sql-db2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>通过JDBC使用DB2 ALTOBJ存储过程Alter Column</title>
		<link>http://liguoliang.com/2010/jdbc-alter-column-with-db2-altobj-procedure/</link>
		<comments>http://liguoliang.com/2010/jdbc-alter-column-with-db2-altobj-procedure/#comments</comments>
		<pubDate>Tue, 05 Oct 2010 09:04:20 +0000</pubDate>
		<dc:creator>Guoliang</dc:creator>
				<category><![CDATA[DB]]></category>
		<category><![CDATA[Alter Column]]></category>
		<category><![CDATA[DB2]]></category>
		<category><![CDATA[JDBC]]></category>
		<category><![CDATA[Procedure]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://liguoliang.com/2010/jdbc-alter-column-with-db2-altobj-procedure/</guid>
		<description><![CDATA[本文将简述通过JDBC呼叫DB2的ALTOBJ存储过程, 以进行Column的Alter操作.<p class='read-more'><a href='http://liguoliang.com/2010/jdbc-alter-column-with-db2-altobj-procedure/'></a></p><p><p>

----------Post from: <a href="http://liguoliang.com">@LiGuoliang.com, 欢迎回来~</a>----------</p></p>
]]></description>
			<content:encoded><![CDATA[<p>本文将简述通过JDBC呼叫DB2的ALTOBJ存储过程, 以进行Column的Alter操作.   <br />API: <a href="http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/admin/r0011934.htm">http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/admin/r0011934.htm</a></p>
<h3><strong>ALTOBJ procedure Alter column 须知:</strong> </h3>
<p>1. 对于Alter Column的操作, 如: 重命名, 修改数据类型, 修改nullable, 扩大数据范围等操作, 不可通过单纯的SQL语句执行. 需要呼叫ALTOBJ存储过程进行修改.</p>
<p>2. 如果使用ATLOBJ 修改Column, Column的数据,&#160; 原有PrimaryKey, 相关的Index, 都不会改变.</p>
<p>3. 特别的, 对于重命名列:</p>
<p>- 如果为PrimaryKey, DB2在重新创建Table时会使用新的名称创建主键.</p>
<p>-&#160; 但对于有关的Index &#8211; 在重建时, DB2使用旧的名称创建Index, 会出现错误, 解决方法是在呼叫存储过程前, 先Drop被重命名的Column对应的Index, 在存储过程呼叫完毕(Table已重建)后, 再次Create Index即可.</p>
<p>4. 对于修改Default/AutoIncrement, 可通过单纯的SQL Alert语句执行就可完成.</p>
<h3><strong>使用ALTOBJ存储过程AlertColumn举例:</strong></h3>
<p>以下重命名一个Column (由db2 Control Center show sql生成):</p>
<p>CALL SYSPROC.ALTOBJ ( &#8216;APPLY_CONTINUE_ON_ERROR&#8217;, &#8216;CREATE TABLE TB6 (    <br />&#160; ID INTEGER NOT NULL&#160; GENERATED ALWAYS AS IDENTITY (START WITH 0, INCREMENT BY 1),     <br />&#160; NAME3 INTEGER&#160; DEFAULT 96 ) IN USERSPACE1 COMPRESS YES &#8216;, -1, ? )</p>
<p>注意: 该语句只能在DB2工具中使用, 还不能直接在JDBC中.</p>
<p><strong>在JDBC中使用ALTOBJ Alert Column:</strong> </p>
<p>按照API中ALTOBJ procedure的说明: 第一个参数(上面语句-1处), 为INOUT类型, 既作为输入参数又作为输出参数(<a href="http://liguoliang.com/2010/jdbc-callablestatement-inout-parameter/" target="_blank">INOUT参数介绍</a>), 因此在JDBC使用时会要求注册out parameter, 在JDBC中则需要使用:</p>
<pre class="java" name="code">String sql = &quot;CALL SYSPROC.ALTOBJ ( 'APPLY_CONTINUE_ON_ERROR', 'CREATE TABLE TB6 (
  ID INTEGER NOT NULL  GENERATED ALWAYS AS IDENTITY (START WITH 0, INCREMENT BY 1),
  NAME3 INTEGER  DEFAULT 96 ) IN USERSPACE1 COMPRESS YES ', ?, ? ))&quot;;
	// 第一个参数为INOUT参数, 第二个为OUT 

        CallableStatement proc = connection.prepareCall(sql);
        proc.setInt(1, -1); // 作为IN时, 提供Value
        proc.registerOutParameter(1, Types.INTEGER);  // 作为OUT时 注册输出参数

        proc.registerOutParameter(2, Types.VARCHAR); // 第二个参数为OUT参数, 仅注册.

proc.executeUpdate();</pre>
<p><p>

----------Post from: <a href="http://liguoliang.com">@LiGuoliang.com, 欢迎回来~</a>----------</p></p>
]]></content:encoded>
			<wfw:commentRss>http://liguoliang.com/2010/jdbc-alter-column-with-db2-altobj-procedure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DB2使用存储过程运行SQL语句时务必要escape</title>
		<link>http://liguoliang.com/2010/escape-sql-in-procedure/</link>
		<comments>http://liguoliang.com/2010/escape-sql-in-procedure/#comments</comments>
		<pubDate>Tue, 05 Oct 2010 08:12:47 +0000</pubDate>
		<dc:creator>Guoliang</dc:creator>
				<category><![CDATA[DB]]></category>
		<category><![CDATA[DB2]]></category>
		<category><![CDATA[Escape]]></category>
		<category><![CDATA[Procedure]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[存储过程]]></category>

		<guid isPermaLink="false">http://liguoliang.com/2010/escape-sql-in-procedure/</guid>
		<description><![CDATA[对普通的SQL来说, 无需转义, 可直接运行; 但作为存储过程的参数, 所以必须先转义(不论运行在DB2CC还是通过JDBC).<p class='read-more'><a href='http://liguoliang.com/2010/escape-sql-in-procedure/'></a></p><p><p>

----------Post from: <a href="http://liguoliang.com">@LiGuoliang.com, 欢迎回来~</a>----------</p></p>
]]></description>
			<content:encoded><![CDATA[<p>譬如: 我Alert一个Column的Nullable后, 需要运行如下语句:</p>
<p>CALL SYSPROC.ALTOBJ ( &#8216;APPLY_CONTINUE_ON_ERROR&#8217;, &#8216;CREATE TABLE ADMINISTRATOR.TB6 (    <br />ID BIGINT&#160; NOT NULL&#160; WITH DEFAULT 26 ,     <br />NAME VARCHAR (128)&#160; NOT NULL WITH DEFAULT <strong>&#8216;TOM&#8217;</strong>) IN USERSPACE1 COMPRESS YES &#8216;, -1, ? );</p>
<p>注意看, NAME中名字都将默认叫做TOM, 但不论通过JDBC还是DB2Control Center运行, 都会出现错误:</p>
<p>SQL0104N&#160; An unexpected token &quot;TOM&quot; was found following &quot;NULL WITH DEFAULT &#8216;&quot;&#8230;.</p>
<p>User response:    <br />Examine and correct the statement in the area of the specified token. </p>
<p> sqlcode: –104&#160; <br /> sqlstate: 42601</p>
<p>这不是让我费解的问题, 平日里咱最擅长的就是制造一大堆问题. 但DB2CC很贱, 生成出来的SQL语句就是这样, 但它死活就是有错误.</p>
<p><strong>解决方法:</strong></p>
<p>对普通的SQL来说, 无需转义, 可直接运行; 但作为存储过程的参数, 所以必须先转义(不论运行在DB2CC还是通过JDBC) </p>
<p>否则这句代码就紊乱了, 引号之间就被TOM搞乱套了.</p>
<p>正解:(注意看引号 &#8216;TOM&#8217; =&gt; &#8221;TOM&#8221;) </p>
<p> CALL SYSPROC.ALTOBJ ( &#8216;APPLY_CONTINUE_ON_ERROR&#8217;, &#8216;CREATE TABLE ADMINISTRATOR.TB6 (   <br />ID BIGINT&#160; NOT NULL&#160; WITH DEFAULT 26 ,   <br />NAME VARCHAR (128)&#160; NOT NULL WITH DEFAULT <strong>&#8221;TOM&#8221;</strong>) IN USERSPACE1 COMPRESS YES &#8216;, -1, ? );</p>
<p><p>

----------Post from: <a href="http://liguoliang.com">@LiGuoliang.com, 欢迎回来~</a>----------</p></p>
]]></content:encoded>
			<wfw:commentRss>http://liguoliang.com/2010/escape-sql-in-procedure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DB2获得当前版本Get Version SQL语句</title>
		<link>http://liguoliang.com/2010/db2-get-version-sql/</link>
		<comments>http://liguoliang.com/2010/db2-get-version-sql/#comments</comments>
		<pubDate>Sun, 03 Oct 2010 10:12:16 +0000</pubDate>
		<dc:creator>Guoliang</dc:creator>
				<category><![CDATA[DB]]></category>
		<category><![CDATA[DB2]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://liguoliang.com/2010/db2-get-version-sql/</guid>
		<description><![CDATA[<p>SQL语句: &#34;SELECT service_level, fixpack_num FROM TABLE (sysproc.env_get_inst_info()) as INSTANCEINFO&#34;;</p>
<p> </p><p class='read-more'><a href='http://liguoliang.com/2010/db2-get-version-sql/'>More...</a></p><p><p>

----------Post from: <a href="http://liguoliang.com">@LiGuoliang.com, 欢迎回来~</a>----------</p></p>
]]></description>
			<content:encoded><![CDATA[<p>SQL语句: &quot;SELECT service_level, fixpack_num FROM TABLE (sysproc.env_get_inst_info()) as INSTANCEINFO&quot;;</p>
<p> <span id="more-1581"></span>
<p>运行结果:    </p>
<p>+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+   <br />| SERVICE_LEVEL&#160;&#160;&#160;&#160; | FIXPACK_NUM |    <br />+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+    <br />&gt; DB2 v9.7.200.358&#160;&#160; | 2&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; |    <br />+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+</p>
<p>See: <a href="http://bytes.com/topic/db2/answers/443690-how-get-current-db2-version-v8-higher">http://bytes.com/topic/db2/answers/443690-how-get-current-db2-version-v8-higher</a></p>
<p><p>

----------Post from: <a href="http://liguoliang.com">@LiGuoliang.com, 欢迎回来~</a>----------</p></p>
]]></content:encoded>
			<wfw:commentRss>http://liguoliang.com/2010/db2-get-version-sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>通过ALERT为DB2 TABLE增加/删除主键 ADD/DROP PRIMARY KEY</title>
		<link>http://liguoliang.com/2010/add-drop-primary-key-in-db2/</link>
		<comments>http://liguoliang.com/2010/add-drop-primary-key-in-db2/#comments</comments>
		<pubDate>Sun, 03 Oct 2010 07:01:18 +0000</pubDate>
		<dc:creator>Guoliang</dc:creator>
				<category><![CDATA[DB]]></category>
		<category><![CDATA[DB2]]></category>
		<category><![CDATA[Primary key]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://liguoliang.com/2010/add-drop-primary-key-in-db2/</guid>
		<description><![CDATA[Drop Primary Key 移除主键:
<code>ALTER TABLE TABLE2 DROP PRIMARY KEY</code>
Add Primary Key 增加主键:
<code>ALTER TABLE TABLE2 ADD ID2 INTEGER NOT NULL DEFAULT 1;
ALTER TABLE TA</code><p class='read-more'><a href='http://liguoliang.com/2010/add-drop-primary-key-in-db2/'>More...</a></p><p><p>

----------Post from: <a href="http://liguoliang.com">@LiGuoliang.com, 欢迎回来~</a>----------</p></p>
]]></description>
			<content:encoded><![CDATA[<h3>Drop Primary Key 移除主键:</h3>
<p><code>ALTER TABLE TABLE2 DROP PRIMARY KEY</code></p>
<h3>Add Primary Key 增加主键:</h3>
<p><code>ALTER TABLE TABLE2 ADD ID2 INTEGER NOT NULL DEFAULT 1;<br />
ALTER TABLE TABLE2 ADD PRIMARY KEY(ID2);</code></p>
<p>See: <a href="http://bytes.com/topic/db2/answers/670160-how-change-primary-key-already-existing-table">http://bytes.com/topic/db2/answers/670160-how-change-primary-key-already-existing-table</a></p>
<p><p>

----------Post from: <a href="http://liguoliang.com">@LiGuoliang.com, 欢迎回来~</a>----------</p></p>
]]></content:encoded>
			<wfw:commentRss>http://liguoliang.com/2010/add-drop-primary-key-in-db2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

