Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在使用DB2 generate unique()函数生成的DB2表中选择唯一id?_Sql_Db2_Cobol - Fatal编程技术网

Sql 如何在使用DB2 generate unique()函数生成的DB2表中选择唯一id?

Sql 如何在使用DB2 generate unique()函数生成的DB2表中选择唯一id?,sql,db2,cobol,Sql,Db2,Cobol,我想从DB2表中选择信息,在一个简单的select查询中使用DB2Generate unique()函数生成的唯一id作为键 直接使用该字段给出的SQL代码为-333,在select中使用十六进制(唯一id)给出的SQL代码为+100 如何从表中获取信息?这取决于参数的数据类型。 如果您知道它的十六进制表示,那么: DECLARE GLOBAL TEMPORARY TABLE SESSION.GEN_UNIQUE (U) AS (VALUES GENERATE_UNIQUE()) WITH D

我想从DB2表中选择信息,在一个简单的select查询中使用DB2Generate unique()函数生成的唯一id作为键

直接使用该字段给出的SQL代码为-333,在select中使用十六进制(唯一id)给出的SQL代码为+100


如何从表中获取信息?

这取决于参数的数据类型。
如果您知道它的十六进制表示,那么:

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)
,则可以像往常一样使用:

--#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
@

这是一个编程网站__显示您的代码。
Generate_Unique
返回位数据的
char(13)
。查询时,主机变量的数据类型必须兼容。您的cobol预处理器应该理解
01。。。SQL类型为二进制(13)
,并生成适当的结构。