簡體   English   中英

使用python 2.7.5中cx_Oracle模塊的函數callproc執行腳本

[英]Executing script by using function callproc from cx_Oracle module in python 2.7.5

我對Python比較陌生。 我目前正在研究Oracle DB中的SQL語句執行。

當我執行查詢時:

query = 'select * from table' 
cursor.execute(query)
result = cursor.fetchall()

一切都很順利,但是當我嘗試執行腳本時:

純文本腳本:

begin
 SIEBEL_DBA.X_DR_DEPLOY(id => '1-4NANEI', env_code => 'SVE_SIT');
end;
/

來自腳本的代碼

script = "begin\nSIEBEL_DBA.X_DR_DEPLOY(id => '1-4NANEI', env_code => 'SVE_SIT');\nend;"
cursor.execute(script)

result = cursor.fetchall()

我得到一個例外,這不是一個查詢,但這個腳本仍然有效。

所以從我用Google搜索,看起來我應該使用callproc函數:

cursor.callproc['SIEBEL_DBA.X_DR_DEPLOY',{'id' : '1-4NANEI', 'env_code' : 'SVE_SIT'}]
connection.commit()

result = cursor.fetchall()

當我執行此語句時,我也遇到異常,但這次DB中沒有任何更改:

'builtin_function_or_method'對象沒有屬性' getitem '

有人可以指出我不正確的地方,我應該如何修改聲明,以便它能正常工作。

非常感謝提前!

解析度:

我對callproc和callfunc函數的語法和復雜性感到沮喪。 我找到了很好的資源: http//dbaportal.eu/sidekicks/sidekick-cx_oracle-code-paterns/#part1在這個鏈接中我發現了所有需要的信息和如何使用cx_Oracle庫的例子。

最后我只需要修改一下我的代碼:

cursor.callproc('SIEBEL_DBA.X_DR_DEPLOY', ['1-4NANEI', 'SVE_SIT'])

並且所需的部分已完成,我不需要指定任何返回類型,因為我正在執行的腳本不返回任何值,它只是設置它。

例外情況是因為你正在使用[ ]你應該使用的地方()

cursor.callproc('SIEBEL_DBA.X_DR_DEPLOY',{'id' : '1-4NANEI', 'env_code' : 'SVE_SIT'})

請記住,返回類型是必需的:

Cursor.callfunc(name,returnType,parameters = [],keywordParameters = {})

使用給定名稱調用函數。 返回類型以setinputsizes()所需的相同表示法指定。 參數序列必須包含函數所需的每個參數的一個條目。 任何關鍵字參數都將包含在位置參數之后。 調用的結果是函數的返回值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM