假设数据.xlsx如下所示:
Column_Name |Table_Name
CUST_ID_1 |Table_1
CUST_ID_2 |Table_2
以下是我尝试使用 Python 中的 db2bind_param生成的 SQL:
从TABLE_1中选择CUST_ID_1,其中CUST_ID_1= 12345
从TABLE_2中选择CUST_ID_2,其中CUST_ID_2= 12345
这就是我尝试生成此查询的方式:
import ibm_db
import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile
validate_sql = "SELECT ? FROM ? WHERE ?=12345"
validate_stmt = ibm_db.prepare(conn, validate_sql)
df = pd.read_excel("data.xlsx", sheet_name='Sheet1')
for i in df.index:
ibm_db.bind_param(validate_stmt, 1, df['Column_Name'][i])
ibm_db.bind_param(validate_stmt, 2, df['Table_Name'][i])
ibm_db.bind_param(validate_stmt, 3, df['Column_Name'][i])
ibm_db.execute(validate_stmt)
validation_result = ibm_db.fetch_both(validate_stmt)
while validation_result != False:
print(validation_result[0])
validation_result = ibm_db.fetch_both(validate_stmt)
当我尝试执行此代码时,我遇到了 SQLCODE=-104 错误。
知道参数绑定的语法应该如何吗?
谢谢 加内什
2 个主要错误。
1. 不能对表或列名称使用参数标记(第 2 和第 3 个参数(。
2. 如果无法从查询(1-st 参数(中理解参数标记,则必须指定参数标记的数据类型。你必须使用类似 «cast(?作为所需的数据类型(»。但它仅供您参考,因为您尝试在此处将其用作列名,这是不可能的,如 1( 中所述。