すべてのテーブルの列がCol_year = 1994である必要があるテーブルのリストから行の数を取得しようとしています。これは、Pythonの出力ループを使用しないsqlではそれは多くのDBヒットが必要になります。これを行うにはPython + SQL:Pythonからプロシージャを実行するには? [ストアドプロシージャを呼び出さない]
、私は以下のようなPROCを書かれている:
DECLARE
l_counter NUMBER;
tot_counter NUMBER;
v_sql varchar2(10000);
cursor c1 is
select table_name from ALL_TABLES
where table_name in ("Table1", "Table2", "Table3");
BEGIN
tot_counter := 0;
FOR rec IN c1 LOOP
v_sql := 'select count(*) from '|| rec.table_name ||' where Col_year = 1994';
EXECUTE IMMEDIATE v_sql INTO l_counter;
tot_counter := tot_counter + l_counter;
DBMS_OUTPUT.PUT_LINE(rec.table_name || ' l_counter ' || l_counter || ' tot_counter ' || tot_counter);
END LOOP;
END;
のpythonからこれを呼び出すには?
これは一時的な目的であるため、実際のデータベースではこれを作成できないという状況があります。したがって、cursor.callproc()のcursor.executeproc()insteatのようなものを探していますか?これは可能ですか?
使用するデータベース、バージョン、およびアダプタを追加する必要があります。 –
アイデアは動的にプロシージャを実行することです...スクリプトはPythonコードの一部です。したがって、このプロシージャをデータベースに作成したいと考えています。 – neoman1