【发布时间】:2011-10-20 23:42:56
【问题描述】:
我能找到的所有使用 PL/SQL 的示例最终都是这样的 (this example taken from Wikipedia):
FOR RecordIndex IN (SELECT person_code FROM people_table)
LOOP
DBMS_OUTPUT.PUT_LINE(RecordIndex.person_code);
END LOOP;
换句话说,它们都有一个共同点:当需要将数据实际输出到某个地方时,它们会将其粘贴在 DBMS_OUTPUT 中,这对于应用程序来说似乎是一个非常无用的地方来处理它。
如果我想使用 PL/SQL 功能从 Oracle 数据库中检索数据,就好像这些数据是普通 SQL 查询的结果一样,我该怎么做?例如,如果我想以与处理SELECT ... FROM ... 的结果相同的方式处理被DELETE ... RETURNING ... INTO SQL 语句删除的行?
我不想修改数据库的架构或创建任何存储过程;我只想做cursor.execute("begin; ... something; end"); results = cursor.fetchall()。
我确实不想用cursor.var() 创建一个变量,因为该API 不能在数据库实现之间移植。 (显然 SQL 也不能移植,但人们普遍接受的事实是,无论如何都需要为不同的数据库后端生成自定义 SQL 字符串。)
【问题讨论】:
标签: python sql oracle cx-oracle