- 浏览: 717283 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
cuqing:
laogao598599 写道匿名内部类不一定是局部内部类,还 ...
匿名内部类访问外部类中的局部变量必须是final属性 -
laogao598599:
匿名内部类不一定是局部内部类,还可以作为成员变量
匿名内部类访问外部类中的局部变量必须是final属性 -
stand_star:
非常给力!
struts2验证规则配置文件命名方式 -
wenlongsust:
嗯, 将返回值修改为html的确就可以了
EasyUI form ajax submit后,在IE下提示下载内容的解决办法 -
勇往直前wwt:
这样是自动增长,但每次id还得插入,如何只插入其他字段而让id ...
把主键定义为自动增长标识符类型
1.SQL语句:直接利用SQL语句创建DB2函数
SET SCHEMA DB2INFO;
SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","DB2INFO";
CREATE FUNCTION "DB2INFO"."CONVERTYMD"
("SSRC" VARCHAR(30),
"SMOD" VARCHAR(30),
"ICYCLE" INTEGER,
"STYPE" VARCHAR(2)
)
RETURNS VARCHAR(30)
SPECIFIC "DB2INFO"."SQL100205164226500"
LANGUAGE SQL
NOT DETERMINISTIC
READS SQL DATA
STATIC DISPATCH
CALLED ON NULL INPUT
EXTERNAL ACTION
INHERIT SPECIAL REGISTERS
BEGIN ATOMIC
DECLARE i_pos INTEGER;
DECLARE s_res VARCHAR(30);
DECLARE s_mods VARCHAR(30);
DECLARE s_date VARCHAR(30);
DECLARE S_DAY VARCHAR(2);
DECLARE S_LAST_DAY VARCHAR(2);
DECLARE S_YYYYMM VARCHAR(30);
SET S_RES = UCASE(RTRIM(SSRC));
SET S_MODS = UCASE(RTRIM(SMOD));
SET I_POS = LOCATE(S_MODS,S_RES);
IF I_POS=0 THEN
RETURN 'NULL';
END IF;
IF UCASE(RTRIM(STYPE))='W' THEN
SET S_DATE = RTRIM(CHAR(CURRENT DATE - (ICYCLE*7) DAYS,ISO));
RETURN REPLACE(S_RES,S_MODS,SUBSTR(S_DATE,1,LENGTH(S_MODS)));
END IF;
IF UCASE(RTRIM(STYPE))='D' THEN
SET S_DATE = RTRIM(CHAR(CURRENT DATE - ICYCLE DAYS,ISO));
RETURN REPLACE(S_RES,S_MODS,SUBSTR(S_DATE,1,LENGTH(S_MODS)));
END IF;
IF(UCASE(RTRIM(STYPE))='H') THEN
SET S_DATE = RTRIM(CHAR(date(CURRENT TIMESTAMP - ICYCLE HOURS),ISO))||
' '|| RTRIM(CHAR(time(CURRENT TIMESTAMP - ICYCLE HOURS)));
RETURN REPLACE(S_RES,S_MODS,SUBSTR(S_DATE,1,LENGTH(S_MODS)));
END IF;
IF UCASE(RTRIM(STYPE))='M' THEN
SET S_DAY = RTRIM(SUBSTR(S_RES,LENGTH(S_MODS)+2,2));
SET S_LAST_DAY = RTRIM(CHAR(DAY(CURRENT DATE - (ICYCLE-1) MONTHS -DAY(
CURRENT DATE -(ICYCLE-1) MONTHS) days)));
SET S_YYYYMM = SUBSTR(RTRIM(CHAR(CURRENT DATE - ICYCLE MONTHS,ISO)),1,
LENGTH (S_MODS));
IF int(S_DAY)>int(S_LAST_DAY) THEN
SET S_RES = REPLACE(S_RES,S_DAY,S_LAST_DAY);
END IF;
RETURN REPLACE(S_RES,S_MODS,S_YYYYMM);
END IF;
RETURN 'NULL';
END;
使用方法:select convertymd(20100617) from sysibm.sysdummy1;
******************************************************************************************************
2.C语言
2.1:在UNIX下编写C程序然后编译成可执行文件 application_id,chmod 文件权限后在执行第二步,可执行文件放在/home/db2inst1/sqllib/function/ DB2的安装目录
2.2:创建DB2函数
CREATE FUNCTION "DB2INFO"."APPLICATION_ID" ( )
RETURNS VARCHAR(128)
SPECIFIC "DB2INFO"."APPLID"
EXTERNAL NAME 'application_id!getApplicationId'
LANGUAGE C
PARAMETER STYLE SQL
DETERMINISTIC
NOT FENCED
THREADSAFE
CALLED ON NULL INPUT
NO SQL
NO EXTERNAL ACTION
NO SCRATCHPAD
NO FINAL CALL
ALLOW PARALLEL
DBINFO
STATIC DISPATCH
INHERIT SPECIAL REGISTERS;
******************************************************************************************************
3.Java类 【跨平台WINDOWS/UNIX/LINUX】
3.1:编写java类程序然后编译成可执行文件UserFunction.class*,chmod 文件权限后在执行第二步,JAVA类文件放在/home/db2inst1/sqllib/function/ DB2的安装目录
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import COM.ibm.db2.app.*;
/**
* DB2用户自定义函数java实现
*
* @author jason.cheng
*/
public class UserFunction extends UDF {
private static String NULL_VALUE = null;
public static String dateToFormat(String data){
return patternDate(data);
}
public static String getReplace(String data){
return patternReplace(data);
}
public static String patternDate(String data) {
String[] pattern_YYYYMMDD = {
"(2//d{3}(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))",
"YYYYMMDD" };
String[] pattern_YYYYMM = { "((2//d{3}(0[1-9]|1[0-2])))", "YYYYMM" };
String[] pattern_YYYY = { "(2//d{3})", "YYYY" };
String[] pattern_MMDD = {
"(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8])))",
"MMDD" };
String[] pattern_DD = { "((0|1|2)[0-9]|3[0-1])$", "DD" };
Pattern YYYYMMDD = Pattern
.compile("(([^0-9]|^)2//d{3}(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))((?=[^0-9])|$)");
Pattern YYYYMM = Pattern
.compile("(([^0-9]|^)(2//d{3}(0[1-9]|1[0-2])))((?=[^0-9])|$)");
Pattern YYYY = Pattern.compile("([^0-9]|^)(2//d{3})((?=[^0-9])|$)");
Pattern MMDD = Pattern
.compile("([^0-9]|^)(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8])))((?=[^0-9])|$)");
Pattern DD = Pattern.compile("(_(0|1|2)[0-9]|3[0-1])$");
if (YYYYMMDD.matcher(data).find())
return replace(data, pattern_YYYYMMDD);
else if(YYYYMM.matcher(data).find())
return replace(data,pattern_YYYYMM);
else if(YYYY.matcher(data).find())
return replace(data,pattern_YYYY);
else if(MMDD.matcher(data).find())
return replace(data, pattern_MMDD);
else if(DD.matcher(data).find())
return replace(data, pattern_DD);
else{
return data;
}
}
public static String patternReplace(String data) {
String[] pattern_YYYYMMDD = {
"(2//d{3}(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))",
"YYYYMMDD" };
String[] pattern_YYYYMM = { "((2//d{3}(0[1-9]|1[0-2])))", "YYYYMM" };
String[] pattern_YYYY = { "(2//d{3})", "YYYY" };
String[] pattern_MMDD = {
"(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8])))",
"MMDD" };
String[] pattern_DD = { "((0|1|2)[0-9]|3[0-1])$", "DD" };
Pattern YYYYMMDD = Pattern
.compile("(([^0-9]|^)2//d{3}(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))((?=[^0-9])|$)");
Pattern YYYYMM = Pattern
.compile("(([^0-9]|^)(2//d{3}(0[1-9]|1[0-2])))((?=[^0-9])|$)");
Pattern YYYY = Pattern.compile("([^0-9]|^)(2//d{3})((?=[^0-9])|$)");
Pattern MMDD = Pattern
.compile("([^0-9]|^)(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8])))((?=[^0-9])|$)");
Pattern DD = Pattern.compile("(_(0|1|2)[0-9]|3[0-1])$");
if (YYYYMMDD.matcher(data).find())
return replaceStr(data, pattern_YYYYMMDD);
else if(YYYYMM.matcher(data).find())
return replaceStr(data,pattern_YYYYMM);
else if(YYYY.matcher(data).find())
return replaceStr(data,pattern_YYYY);
else if(MMDD.matcher(data).find())
return replaceStr(data, pattern_MMDD);
else if(DD.matcher(data).find())
return replaceStr(data, pattern_DD);
else{
return "";
}
}
public static void main(String[] args) {
//sql语句中的使用
//select dateToFormat(source),getReplace(source) from meta;
String str = "DB2APP.SDH_AREA_INFO_BASIC_2009";
System.out.println(dateToFormat(str));
System.out.println(getReplace(str));
}
public static String replaceStr(final String sourceString, String[] result) {
Pattern pattern = Pattern.compile(result[0]);
Matcher matcher = pattern.matcher(sourceString);
String temp = NULL_VALUE;
if(matcher.find()){
temp = sourceString.substring(matcher.start(), matcher.end());
}
return temp;
}
public static String replace(final String sourceString, String[] result) {
Pattern pattern = Pattern.compile(result[0]);
Matcher matcher = pattern.matcher(sourceString);
String temp = matcher.replaceAll(result[1]);
return temp;
}
}
3.2:创建DB2函数,创建函数的时候可以根据JAVA类中提供的方法进行多个函数的创建
CREATE FUNCTION "DB2INFO"."CONVERTYMDEX"
("DATASTR" VARCHAR(256)
)
RETURNS VARCHAR(256)
SPECIFIC "DB2INFO"."CONVERTYMDEX"
EXTERNAL NAME 'UserFunction!dateToFormat(Ljava/lang/String;)Ljava/lang/String;'
LANGUAGE JAVA
PARAMETER STYLE JAVA
NOT DETERMINISTIC
FENCED
THREADSAFE
RETURNS NULL ON NULL INPUT
NO SQL
EXTERNAL ACTION
NO SCRATCHPAD
NO FINAL CALL
ALLOW PARALLEL
NO DBINFO
STATIC DISPATCH
INHERIT SPECIAL REGISTERS;
******************************************************************************************************
总结:
1.c/C++,Java提供了更为灵活的语法,可以替代SQL不能完成的工作
2.Java提供的函数执行效率和SQL函数对比,前者执行效率更高
3.系统环境需要支持JAVA类,尤其是在LINUX/UNIX下
4.c/C++,Java自定义函数需要DB2 INST1数据库管理员权限去创建,创建后给不同的数据库用户进行赋权操作
******************************************************************************************************
SET SCHEMA DB2INFO;
SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","DB2INFO";
CREATE FUNCTION "DB2INFO"."CONVERTYMD"
("SSRC" VARCHAR(30),
"SMOD" VARCHAR(30),
"ICYCLE" INTEGER,
"STYPE" VARCHAR(2)
)
RETURNS VARCHAR(30)
SPECIFIC "DB2INFO"."SQL100205164226500"
LANGUAGE SQL
NOT DETERMINISTIC
READS SQL DATA
STATIC DISPATCH
CALLED ON NULL INPUT
EXTERNAL ACTION
INHERIT SPECIAL REGISTERS
BEGIN ATOMIC
DECLARE i_pos INTEGER;
DECLARE s_res VARCHAR(30);
DECLARE s_mods VARCHAR(30);
DECLARE s_date VARCHAR(30);
DECLARE S_DAY VARCHAR(2);
DECLARE S_LAST_DAY VARCHAR(2);
DECLARE S_YYYYMM VARCHAR(30);
SET S_RES = UCASE(RTRIM(SSRC));
SET S_MODS = UCASE(RTRIM(SMOD));
SET I_POS = LOCATE(S_MODS,S_RES);
IF I_POS=0 THEN
RETURN 'NULL';
END IF;
IF UCASE(RTRIM(STYPE))='W' THEN
SET S_DATE = RTRIM(CHAR(CURRENT DATE - (ICYCLE*7) DAYS,ISO));
RETURN REPLACE(S_RES,S_MODS,SUBSTR(S_DATE,1,LENGTH(S_MODS)));
END IF;
IF UCASE(RTRIM(STYPE))='D' THEN
SET S_DATE = RTRIM(CHAR(CURRENT DATE - ICYCLE DAYS,ISO));
RETURN REPLACE(S_RES,S_MODS,SUBSTR(S_DATE,1,LENGTH(S_MODS)));
END IF;
IF(UCASE(RTRIM(STYPE))='H') THEN
SET S_DATE = RTRIM(CHAR(date(CURRENT TIMESTAMP - ICYCLE HOURS),ISO))||
' '|| RTRIM(CHAR(time(CURRENT TIMESTAMP - ICYCLE HOURS)));
RETURN REPLACE(S_RES,S_MODS,SUBSTR(S_DATE,1,LENGTH(S_MODS)));
END IF;
IF UCASE(RTRIM(STYPE))='M' THEN
SET S_DAY = RTRIM(SUBSTR(S_RES,LENGTH(S_MODS)+2,2));
SET S_LAST_DAY = RTRIM(CHAR(DAY(CURRENT DATE - (ICYCLE-1) MONTHS -DAY(
CURRENT DATE -(ICYCLE-1) MONTHS) days)));
SET S_YYYYMM = SUBSTR(RTRIM(CHAR(CURRENT DATE - ICYCLE MONTHS,ISO)),1,
LENGTH (S_MODS));
IF int(S_DAY)>int(S_LAST_DAY) THEN
SET S_RES = REPLACE(S_RES,S_DAY,S_LAST_DAY);
END IF;
RETURN REPLACE(S_RES,S_MODS,S_YYYYMM);
END IF;
RETURN 'NULL';
END;
使用方法:select convertymd(20100617) from sysibm.sysdummy1;
******************************************************************************************************
2.C语言
2.1:在UNIX下编写C程序然后编译成可执行文件 application_id,chmod 文件权限后在执行第二步,可执行文件放在/home/db2inst1/sqllib/function/ DB2的安装目录
2.2:创建DB2函数
CREATE FUNCTION "DB2INFO"."APPLICATION_ID" ( )
RETURNS VARCHAR(128)
SPECIFIC "DB2INFO"."APPLID"
EXTERNAL NAME 'application_id!getApplicationId'
LANGUAGE C
PARAMETER STYLE SQL
DETERMINISTIC
NOT FENCED
THREADSAFE
CALLED ON NULL INPUT
NO SQL
NO EXTERNAL ACTION
NO SCRATCHPAD
NO FINAL CALL
ALLOW PARALLEL
DBINFO
STATIC DISPATCH
INHERIT SPECIAL REGISTERS;
******************************************************************************************************
3.Java类 【跨平台WINDOWS/UNIX/LINUX】
3.1:编写java类程序然后编译成可执行文件UserFunction.class*,chmod 文件权限后在执行第二步,JAVA类文件放在/home/db2inst1/sqllib/function/ DB2的安装目录
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import COM.ibm.db2.app.*;
/**
* DB2用户自定义函数java实现
*
* @author jason.cheng
*/
public class UserFunction extends UDF {
private static String NULL_VALUE = null;
public static String dateToFormat(String data){
return patternDate(data);
}
public static String getReplace(String data){
return patternReplace(data);
}
public static String patternDate(String data) {
String[] pattern_YYYYMMDD = {
"(2//d{3}(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))",
"YYYYMMDD" };
String[] pattern_YYYYMM = { "((2//d{3}(0[1-9]|1[0-2])))", "YYYYMM" };
String[] pattern_YYYY = { "(2//d{3})", "YYYY" };
String[] pattern_MMDD = {
"(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8])))",
"MMDD" };
String[] pattern_DD = { "((0|1|2)[0-9]|3[0-1])$", "DD" };
Pattern YYYYMMDD = Pattern
.compile("(([^0-9]|^)2//d{3}(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))((?=[^0-9])|$)");
Pattern YYYYMM = Pattern
.compile("(([^0-9]|^)(2//d{3}(0[1-9]|1[0-2])))((?=[^0-9])|$)");
Pattern YYYY = Pattern.compile("([^0-9]|^)(2//d{3})((?=[^0-9])|$)");
Pattern MMDD = Pattern
.compile("([^0-9]|^)(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8])))((?=[^0-9])|$)");
Pattern DD = Pattern.compile("(_(0|1|2)[0-9]|3[0-1])$");
if (YYYYMMDD.matcher(data).find())
return replace(data, pattern_YYYYMMDD);
else if(YYYYMM.matcher(data).find())
return replace(data,pattern_YYYYMM);
else if(YYYY.matcher(data).find())
return replace(data,pattern_YYYY);
else if(MMDD.matcher(data).find())
return replace(data, pattern_MMDD);
else if(DD.matcher(data).find())
return replace(data, pattern_DD);
else{
return data;
}
}
public static String patternReplace(String data) {
String[] pattern_YYYYMMDD = {
"(2//d{3}(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))",
"YYYYMMDD" };
String[] pattern_YYYYMM = { "((2//d{3}(0[1-9]|1[0-2])))", "YYYYMM" };
String[] pattern_YYYY = { "(2//d{3})", "YYYY" };
String[] pattern_MMDD = {
"(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8])))",
"MMDD" };
String[] pattern_DD = { "((0|1|2)[0-9]|3[0-1])$", "DD" };
Pattern YYYYMMDD = Pattern
.compile("(([^0-9]|^)2//d{3}(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))((?=[^0-9])|$)");
Pattern YYYYMM = Pattern
.compile("(([^0-9]|^)(2//d{3}(0[1-9]|1[0-2])))((?=[^0-9])|$)");
Pattern YYYY = Pattern.compile("([^0-9]|^)(2//d{3})((?=[^0-9])|$)");
Pattern MMDD = Pattern
.compile("([^0-9]|^)(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8])))((?=[^0-9])|$)");
Pattern DD = Pattern.compile("(_(0|1|2)[0-9]|3[0-1])$");
if (YYYYMMDD.matcher(data).find())
return replaceStr(data, pattern_YYYYMMDD);
else if(YYYYMM.matcher(data).find())
return replaceStr(data,pattern_YYYYMM);
else if(YYYY.matcher(data).find())
return replaceStr(data,pattern_YYYY);
else if(MMDD.matcher(data).find())
return replaceStr(data, pattern_MMDD);
else if(DD.matcher(data).find())
return replaceStr(data, pattern_DD);
else{
return "";
}
}
public static void main(String[] args) {
//sql语句中的使用
//select dateToFormat(source),getReplace(source) from meta;
String str = "DB2APP.SDH_AREA_INFO_BASIC_2009";
System.out.println(dateToFormat(str));
System.out.println(getReplace(str));
}
public static String replaceStr(final String sourceString, String[] result) {
Pattern pattern = Pattern.compile(result[0]);
Matcher matcher = pattern.matcher(sourceString);
String temp = NULL_VALUE;
if(matcher.find()){
temp = sourceString.substring(matcher.start(), matcher.end());
}
return temp;
}
public static String replace(final String sourceString, String[] result) {
Pattern pattern = Pattern.compile(result[0]);
Matcher matcher = pattern.matcher(sourceString);
String temp = matcher.replaceAll(result[1]);
return temp;
}
}
3.2:创建DB2函数,创建函数的时候可以根据JAVA类中提供的方法进行多个函数的创建
CREATE FUNCTION "DB2INFO"."CONVERTYMDEX"
("DATASTR" VARCHAR(256)
)
RETURNS VARCHAR(256)
SPECIFIC "DB2INFO"."CONVERTYMDEX"
EXTERNAL NAME 'UserFunction!dateToFormat(Ljava/lang/String;)Ljava/lang/String;'
LANGUAGE JAVA
PARAMETER STYLE JAVA
NOT DETERMINISTIC
FENCED
THREADSAFE
RETURNS NULL ON NULL INPUT
NO SQL
EXTERNAL ACTION
NO SCRATCHPAD
NO FINAL CALL
ALLOW PARALLEL
NO DBINFO
STATIC DISPATCH
INHERIT SPECIAL REGISTERS;
******************************************************************************************************
总结:
1.c/C++,Java提供了更为灵活的语法,可以替代SQL不能完成的工作
2.Java提供的函数执行效率和SQL函数对比,前者执行效率更高
3.系统环境需要支持JAVA类,尤其是在LINUX/UNIX下
4.c/C++,Java自定义函数需要DB2 INST1数据库管理员权限去创建,创建后给不同的数据库用户进行赋权操作
******************************************************************************************************
发表评论
-
mysql免安装版配置
2015-07-19 14:49 7101、my-small.ini是为了小型数据库而设计的。不应该把 ... -
varchar与nvarchar区别
2014-11-06 10:02 1391nvarchar(n) : 包含 n 个字符的可变长度 ... -
SqlServer判断数据库、表、存储过程、函数是否存在
2014-10-31 21:52 18111 判断数据库是否存在 if exists (select ... -
sql server 2008 64位连接sql 2000服务器"SQLNCLI10"
2014-08-28 18:00 2041ql server 2008 64位连接sql 2000服务器 ... -
SQL Server分布式事务
2014-08-28 17:46 1540无法执行该操作,因为链接服务器 "xxxxx&quo ... -
sqlserver远程链接服务器详细配置
2014-08-27 17:09 1962--建立连接服务器 EXEC sp_addlinkedserv ... -
把主键定义为自动增长标识符类型
2014-08-26 18:45 11731.把主键定义为自动增长标识符类型 MySql 在mysql ... -
int、bigint、smallint 、 tinyint
2014-08-26 15:52 805int、bigint、smallint 和 tinyint ... -
Sql Server中判断表或者数据库是否存在
2014-08-21 17:39 968一、SQL Server中判断数据库是否存在: 1.s ... -
oracle、sqlserver、mysql常用函数对比[to_char、to_number、to_date]
2014-07-30 17:03 6512oracle ... -
MySQL日期时间函数
2014-07-30 16:47 1658获取 获取日期值 CURDATE() CURRENT_DATE ... -
DbVisualizer 9 解决中文乱码问题
2014-05-14 15:25 1282Tools->tool Properties->G ... -
SQL Server 2008 各种DateTime的取值范围
2014-05-13 10:56 900SQL Server 2008除了DateTime和Small ... -
pb导出sql脚本
2014-05-13 09:59 7431.选择导出脚本的数据库类型 Database ... -
JDBC连接各种数据库的字符串
2014-02-10 17:32 716oracle driverClass:oracle.j ... -
oracle更新某列为行号
2014-01-21 23:04 17081.有主键 update T a set newOrder= ... -
DbVisualizer 解决中文乱码问题
2014-01-11 20:43 1029在SQL Commander中,sql语句中如果有中文,显示是 ... -
数据库分页
2013-12-18 14:28 0关于分页 SQL 的资料许 ... -
mysql修改字符集
2013-10-31 09:50 899show variables like 'collation_ ... -
Communications link failure
2013-10-09 10:37 1030com.mysql.jdbc.exceptions.jdbc4 ...
相关推荐
DB2的用户自定义函数功能极大地扩展了SQL查询的能力,允许开发者将复杂的业务逻辑封装到自定义函数中,从而提高数据库应用程序的性能和灵活性。通过遵循上述步骤,你可以轻松地在DB2中创建和调用自定义函数,为你的...
在DB2数据库管理系统中,自定义函数允许用户根据特定需求扩展SQL语言的功能。这些函数可以是标量函数、行函数或表函数,分别用于返回单一值、多列数据集(行)或整个结果集(表)。本文将深入探讨如何在DB2中创建...
根据参数数量和返回类型,DB2函数可以分为标量函数(Scalar Function)、聚合函数(Aggregate Function)和窗口函数(Window Function)。 2. **创建函数**:使用`CREATE FUNCTION`语句来定义一个新的函数。例如,...
在`function新建过程.TXT`中,可能详细描述了在DB2中创建加密函数的过程。这个过程通常包括以下步骤: 1. 定义函数结构:声明函数的输入参数,如待加密的数据和密钥,以及返回值类型。 2. 编写SQL或PL/SQL代码:这...
为了使C语言编写的自定义函数能够在DB2中使用,还需要在数据库中创建一个相应的外部函数。这通常涉及到创建一个与C函数对应的SQL函数声明,指定函数的输入输出参数、返回类型以及C函数的位置等信息。 #### 结论 ...
这里我们讨论的"db2创建加密function"指的是在DB2中定义一个可以对数据进行加密和解密的自定义函数,通常涉及编程语言如Java的集成以及SQL过程语言(PL/SQL)的使用。 首先,`EncryAES.java`可能是一个实现AES...
本文将深入探讨如何在不支持正则表达式的DB2版本中创建和使用自定义正则表达式函数。 首先,我们需要了解正则表达式的基础知识。正则表达式是由特殊字符和普通字符组成的模式,用于匹配字符串。例如,`\d+`匹配一个...
* \SQLLIB\FUNCTION:默认的用户自定义函数目录 * \SQLLIB\FUNCTION\UNFENCED:默认的非隔离用户自定义函授目录 * \SQLLIB\HELP:联机帮助文件 * \SQLLIB\JAVADB2:所需的 JAVA 类库 * \SQLLIB\MISC:包含 HTML 搜索...
在数据库管理领域,DB2是一个强大的关系型数据库管理系统,它提供了丰富的函数和操作来处理数据。在本话题中,我们将探讨...在DB2中,如果需要使用`REVERSE`函数,记得自定义一个,因为它是DB2标准库中未包含的功能。
2. 使用工具的SQL编辑器编写定义用户函数的SQL语句,通常会涉及`CREATE FUNCTION`关键字,指定函数名、参数列表、返回类型以及函数体。 3. 在函数体内部,使用SQL语句实现所需的功能逻辑。 4. 在SQL语句之间使用逗号...
对于数据库管理,比如在DB2中,自定义函数可能涉及到SQL的用户定义函数(UDF)。DB2支持多种类型的UDF,包括标量UDF(返回单个值)、表UDF(返回多行结果集)和聚合UDF(如SUM、AVG等)。如果需要根据相同键合并值,...
DB2 语法大全 - CREATE FUNCTION 语句详解 ...CREATE FUNCTION 语句是 DB2 中定义函数的基本语句,通过该语句可以创建标量函数、行函数和表函数,并指定函数的参数、返回类型、函数体和与数据库的交互方式。
集合是用于存储多个元素的数据结构,常用于存储过程和函数中。 ##### 4.1 批量集合 **Oracle:** ```sql TYPE t1 IS TABLE OF NUMBER INDEX BY PLS_INTEGER; t1_tab t1; ``` **DB2:** ```sql DECLARE t1_tab ...
- 函数文件通常位于`C:\sqllib\function`目录下。 #### 九、优化表结构 **命令:** - `db2 reorg table <table_name>`:对表进行重新组织。 - `db2 runstats on table <table_name> with distribution and indexes ...
在DB2中,处理日期和时间是常见的操作,这通常涉及到日期函数的使用。本资料"DB2日期函数"集中总结了DB2在处理日期和时间上的经验和转换语法,对于理解和运用这些函数具有很高的参考价值。 在DB2中,日期和时间函数...
- `db2admin create`:在Windows或OS/2系统中创建DB2实例。 - `db2admin drop`:在Windows或OS/2系统中删除DB2实例。 - `db2get admincfg`:显示DB2管理员配置信息。 - `db2update admincfg`:更新DB2管理员配置信息...
- `CREATE_NOT_FENCED`: 允许用户创建未围栏(user-defined function)的函数。 - `IMPLICIT_SCHEMA`: 允许用户在没有显式使用`CREATE SCHEMA`的情况下创建模式。 - `LOAD`: 允许用户将数据加载到表中。 - `...