如何在使用 DB2 generate unique() 函数生成的 DB2 表中选择唯一 ID?
Posted
技术标签:
【中文标题】如何在使用 DB2 generate unique() 函数生成的 DB2 表中选择唯一 ID?【英文标题】:How do you select an unique id in an DB2 table that was generated using DB2 generate unique() function? 【发布时间】:2021-05-31 16:47:06 【问题描述】:我想从 DB2 表中选择信息,使用 DB2 generate unique() 函数生成的唯一 ID 作为简单选择查询中的键。
直接使用该字段,给出的 SQL 代码为 -333,在 select 中使用 HEX(unique id) 给出的 SQL 代码为 +100。
如何从表格中获取信息?
【问题讨论】:
这是一个编程网站。 __显示您的代码___。Generate_Unique
返回 char(13) for bit data
。查询时,宿主变量的数据类型必须兼容。
你的 cobol 预处理器应该理解 01 ... SQL TYPE IS BINARY(13)
并生成适当的结构。
【参考方案1】:
这取决于参数的数据类型。 如果你知道它的十六进制表示,那么:
DECLARE GLOBAL TEMPORARY TABLE SESSION.GEN_UNIQUE (U) AS (VALUES GENERATE_UNIQUE())
WITH DATA WITH REPLACE ON COMMIT PRESERVE ROWS NOT LOGGED;
SELECT HEX(U) AS HEX_VAL
FROM SESSION.GEN_UNIQUE
WHERE U = HEXTORAW ('20210531172108210028000000');
|HEX_VAL |
|--------------------------|
|20210531172108210028000000|
如果你有CHAR(13) FOR BIT DATA
,那么就可以照常使用了:
--#SET TERMINATOR @
BEGIN
DECLARE L_VAR CHAR(13) FOR BIT DATA;
DECLARE L_DUMMY INT;
DECLARE EXIT HANDLER FOR NOT FOUND
BEGIN
RESIGNAL SQLSTATE '70001' SET MESSAGE_TEXT = 'Oops!';
END;
SET L_VAR = HEXTORAW('20210531172108210028000000');
SELECT 1 INTO L_DUMMY
FROM SESSION.GEN_UNIQUE
WHERE U = L_VAR;
END
@
【讨论】:
以上是关于如何在使用 DB2 generate unique() 函数生成的 DB2 表中选择唯一 ID?的主要内容,如果未能解决你的问题,请参考以下文章
Springboot 启动信息:Generating unique operation named
mysql生成不重复随机数(unique number generation)
linux C语言如何生成uuid(通用唯一识别码Universally Unique Identifier)?
linux C语言如何生成uuid(通用唯一识别码Universally Unique Identifier)?