问题在于从数据库中的查询结果:
cur1 = con.cursor()
result1 = ("SELECT DDATE FROM TABLE(NULL)")
cur1.execute(result1)
result1 = cur1.fetchone()
查询结果-43949.0
需要将结果放入下一个查询,替换其中的前两个“ NULL”值,然后选择:
cur = con.cursor()
POS = (SELECT ST1,ST2 FROM SOMETABLE(**NULL**, **NULL**, NULL, NULL)")
cur.execute(POS)
POS = cur.fetchall()
结果应该是成功的请求,如下所示:POS = (SELECT ST1,ST2 FROM SOMETABLE(43949.0, 43949.0, NULL, NULL)")
如果要使用第一条语句的输入执行第二条语句,则可以使用parameterized statement,并在python代码中将参数从第一条传递到第二条。
例如,类似这样的东西:
cur = con.cursor()
cur.execute('select output1 from step1(null)')
result1 = cur.fetchone()
cur.execute('select output1, output2 from step2(?, ?, null, null)', (result1[0], result1[0]))
result2 = cur.fetchall()
或者,您可以将存储过程连接在一起,以在一个查询中执行此操作。例如:
select s2.*
from step1(null) s1
cross join step2(s1.output1, s1.output1, null, null) s2
与普通表相反,将cross join
与存储过程一起使用不会产生叉积,而是表现为横向联接。