Как я могу перебирать процедуры SQL Server, которые возвращают таблицы и принимают таблицы в качестве входных данныхPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу перебирать процедуры SQL Server, которые возвращают таблицы и принимают таблицы в качестве входных данных

Сообщение Anonymous »

В 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»