В SQL Server у меня есть процедура, которая принимает таблицу в качестве входных данных и возвращает таблицу в качестве выходных данных. Для простоты возьмем такой пример:
CREATE TYPE MyTableType AS TABLE
(
ID INT,
Name NVARCHAR(100),
Age INT
);
CREATE PROCEDURE InsertAndReturnData
@InputTable MyTableType READONLY
AS
BEGIN
-- Do something with the input table, e.g., selecting from it
SELECT * FROM @InputTable;
END;
Например, этот код хорошо работает на сервере sql:
CREATE TABLE MyTempTable (ID INT, Name NVARCHAR(100), Age INT)
INSERT INTO MyTempTable (ID, Name, Age) VALUES
(1, 'John Doe', 30),
(2, 'Jane Smith', 25),
(3, 'Mike Johnson', 40)
select * from #MyTempTable
DECLARE @InputTable MyTableType;
INSERT INTO @InputTable SELECT * FROM MyTempTable;
EXEC InsertAndReturnData @InputTable;
Теперь я хочу получить это из Python. В конечном итоге я ищу что-то вроде:
cursor = conn.cursor()
sql_query_exec = """
DECLARE @InputTable MyTableType;
INSERT INTO @InputTable SELECT * FROM MyTempTable;
EXEC InsertAndReturnData @InputTable;
"""
conn = pyodbc.connect(conn_str)
cursor.execute(sql_query_exec)
rows = cursor.fetchall()
for row in rows:
print(f"ID: {row.ID}, Name: {row.Name}, Age: {row.Age}")
но Python интерпретирует каждую строку как отдельный блок, а не как одну транзакцию.
Как я могу перебирать процедуры, которые возвращают таблицы и принимают таблицы в качестве входных данных?
ОБНОВЛЕНИЕ: если я выполню приведенный выше код, я ничего не получу (пустую таблицу) в качестве ответа без каких-либо ошибок.
pyodbc.ProgrammingError: No results. Previous SQL was not a query.
Подробнее здесь: https://stackoverflow.com/questions/790 ... ake-tables
Как я могу перебирать процедуры SQL Server, которые возвращают таблицы и принимают таблицы в качестве входных данных ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение