如何通过SQL远程创建DB2全文索引(小写Schema名问题)
解决DB2远程创建全文索引时小写Schema名的问题
核心原理:DB2中区分大小写的标识符(包括Schema名)必须用双引号包裹,因此需要确保传递给
SYSPROC.SYSTS_CREATE的第一个参数是包含双引号的小写Schema名字符串,比如"my_schema_name"。不同执行环境的正确写法:
- DB2命令行处理器(CLP)直接执行:
单引号包裹的字符串中双引号无需额外转义,直接写入即可:CALL SYSPROC.SYSTS_CREATE('"my_schema_name"', 'my_index_name', 'my_table (my_column)', '', 'en_us', ?) - 应用程序(如Java JDBC)中执行:
需要用反斜杠转义字符串内的双引号:String sql = "CALL SYSPROC.SYSTS_CREATE('\"my_schema_name\"', 'my_index_name', 'my_table (my_column)', '', 'en_us', ?)"; - 推荐方案:使用参数绑定
彻底避免转义问题,直接将带双引号的Schema名作为参数传递:CallableStatement stmt = conn.prepareCall("CALL SYSPROC.SYSTS_CREATE(?, ?, ?, ?, ?, ?)"); stmt.setString(1, "\"my_schema_name\""); stmt.setString(2, "my_index_name"); stmt.setString(3, "my_table (my_column)"); stmt.setString(4, ""); stmt.setString(5, "en_us"); stmt.registerOutParameter(6, java.sql.Types.INTEGER); stmt.execute();
- DB2命令行处理器(CLP)直接执行:
错误原因说明:
你之前使用的'"my_schema_name"'是HTML转义格式,DB2无法识别这种转义字符,因此触发语法错误。必须使用SQL执行环境对应的双引号转义规则。
内容的提问来源于stack exchange,提问作者mxcolin
相关产品推荐
相关产品推荐

