python cx_oracle 返回,从Python中的cx_Oracle PL/SQL调用返回变量

同意M.Wymann的观点,我需要通过传递列表中元素的数量来返回字符串。这是我的密码。cursor = con.cursor()

for a,b,c in data:

statement='''DECLARE

t_name VARCHAR2 (50);

owner VARCHAR2 (50);

c_name VARCHAR2 (50);

O_type VARCHAR2 (50);

nullable VARCHAR2 (20);

BEGIN

SELECT t1.table_name,

t1.owner,

t1.column_name,

CASE

WHEN t1.data_type = 'NUMBER' AND t1.data_precision IS NULL

THEN

'NUMBER'

WHEN t1.data_type = 'DATE'

THEN

t1.data_type

WHEN REGEXP_REPLACE (t1.data_type, '(\d)|VAR', '') = 'CHAR'

THEN

t1.data_type || '(' || t1.DATA_LENGTH || ')'

WHEN t1.data_type = 'NUMBER'

AND t1.data_precision IS NOT NULL

AND t1.data_scale = 0

THEN

'NUMBER(' || t1.data_precision || ')'

WHEN t1.data_type = 'NUMBER'

AND t1.data_precision IS NOT NULL

AND t1.data_scale <> 0

THEN

'NUMBER(' || t1.data_precision || ',' || t1.data_scale || ')'

ELSE

'Not Handled'

END

"Oracle data type",

t1.nullable

INTO t_name,

owner,

c_name,

O_type,

nullable

FROM all_tab_columns t1

WHERE t1.table_name = :tname

AND t1.owner = :towner

AND t1.column_name = :tcolname;

:o_result :=

t_name

|| '|'

|| owner

|| '|'

|| c_name

|| '|'

|| O_type

|| '|'

|| nullable;

EXCEPTION

WHEN OTHERS

THEN

t_name := :tname;

c_name := 'NOT FOUND ';

owner := :towner;

O_type := 'NOT FOUND ';

nullable := 'NOT FOUND ';

:o_result :=

t_name

|| '|'

|| owner

|| '|'

|| c_name

|| '|'

|| O_type

|| '|'

|| nullable;

END;'''

o_result = cursor.var(cx_Oracle.STRING)`enter code here`

cursor.execute(statement, tname=a, towner=b, tcolname=c, o_result=o_result)

ObLst = o_result.getvalue().split('|')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值