如何使V_SQL作为包含where子句的字符串值的连接。而不是表别名?在DB2中

如何使V_SQL作为包含where子句的字符串值的连接。而不是表别名?在DB2中,db2,Db2,如何使V_SQL作为包含where子句的字符串值的连接。而不是表别名?在DB2中 CREATE OR REPLACE PROCEDURE TEST_KWS82(IN I_QUE BIGINT) SPECIFIC TEST_KWS82 P1: BEGIN DECLARE V_SQL VARCHAR(1000); DECLARE V_RET VARCHAR(1000); DECLARE V_RET2 VARCHAR(1000); SET V_SQL = 'WHERE KEY_NAME =

如何使V_SQL作为包含where子句的字符串值的连接。而不是表别名?在DB2中

CREATE OR REPLACE PROCEDURE TEST_KWS82(IN I_QUE BIGINT)
SPECIFIC TEST_KWS82
 P1: BEGIN
 DECLARE V_SQL VARCHAR(1000);
 DECLARE V_RET VARCHAR(1000);
 DECLARE V_RET2 VARCHAR(1000);
 SET V_SQL = 'WHERE KEY_NAME = ''ACTION_RECEST'' and valid_flg = ''Y''';

--in below V_SQL is treating as table alias, but we need to get above V_SQl(concatination string)
 SELECT KEY_NAME,KEY_VALUE INTO V_RET,V_RET2 FROM TBL_META_LOOKUP V_SQL limit 1;
 CALL SP_MEM_SV_LOG_OUTPUT(
1
 , 'MEM_I_002'
 , 'TEST_KWS70'
 , 'KEY_NAME:' || V_RET || ' KEY_VALUE:' || V_RET2
 , 'TEST_KWS70'
  , 'TEST_KWS70'
  , 'test');
END P1
您可以使用如下方式:

SET V_SQL = 'WHERE KEY_NAME = ''ACTION_RECEST'' and valid_flg = ''Y''';
...
-- SELECT KEY_NAME,KEY_VALUE INTO V_RET,V_RET2 FROM TBL_META_LOOKUP V_SQL limit 1;
PREPARE S1 FROM 'SET (?, ?) = (SELECT KEY_NAME, KEY_VALUE FROM TBL_META_LOOKUP '||V_SQL||' limit 1)';
EXECUTE S1 INTO V_RET, V_RET2;