2014-01-29 55 views
2

使用官方半支持hdbcli Python模塊連接到SAP HANA。從選擇結果創建表失敗,錯誤292「參數的錯誤數量:」

我試圖從一個子查詢,其中有一些佔位符創建一個表:

>>> cursor.execute('CREATE TABLE temporary_table AS (SELECT ? AS a FROM DUMMY) WITH DATA', [1]) 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "/some-masked-path-here/hdbcli/dbapi.py", line 369, in execute 
    ret = self.__execute(operation, tuple(parameters)) 
    File "/some-masked-path-here/hdbcli/dbapi.py", line 244, in __execute 
    ret = self.__cursor.execute(operation, parameters=parameters, iscall=iscall) 
Error: (292, 'wrong number of arguments: ') 

(在我的實際情況下,我想創建一個臨時表,但是這並不改變結果)

如果我從子查詢,而不是一個CREATE TABLE改變我的查詢,以一個簡單的選擇,它工作正常:

>>> cursor.execute('SELECT * FROM (SELECT ? AS a FROM DUMMY) AS sub', [1]) 
True 

,如果我改變我的內012它也適用返回,而不是使用的佔位符恆:

>>> cursor.execute('CREATE TABLE temporary_table AS (SELECT 1 AS a FROM DUMMY) WITH DATA', []) 
True 

更新:我已經通過pyodbc官方支持的ODBC驅動程序測試此爲好,和一個非常類似的問題表現:

>>> cursor.execute('CREATE TABLE temporary_table AS (SELECT ? AS a FROM DUMMY) WITH DATA', [1]) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
pyodbc.ProgrammingError: ('The SQL contains 0 parameter markers, but 1 parameters were supplied', 'HY000') 

而一個簡單的子查詢仍然可以通過ODBC的作品,以及:

>>> cursor.execute('SELECT * FROM (SELECT ? AS a FROM DUMMY) AS sub', [1]) 
<pyodbc.Cursor object at 0xb70f0b80> 

我在這裏不知所措;我嘗試了所有我能想到的,但仍然無法弄清楚爲什麼CREATE TABLE查詢無法使用佔位符。任何幫助弄清楚這個爛攤子將不勝感激!

回答

1

我試了一下哈娜工作室。它也失敗了。所以這不是Python特定的。恕我直言,如果你在SAP community network中提出這個問題,你有更好的機會得到答案,因爲這是專家在哪裏。

+0

我已經在那裏問過;似乎是HANA中的一個錯誤,因爲我得到的所有建議都是通過發佈單獨的「CREATE TABLE」和「INSERT ... SELECT」語句來實現的。 – lanzz

相關問題