[英]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.