from sqlalchemy import text from .database import async_session async def exec_procedure(proc_name, params:dict = None, database: str = None): async with async_session() as session: sql_params = "" if params: sql_params = ",".join([f"@{key} = :{key}" for key, value in params.items()]) dbstr = "" if database: dbstr = f"[{database}]." sql_string = text(f''' DECLARE @return_value int; EXEC @return_value = {dbstr}[dbo].[{proc_name}] {sql_params}; SELECT 'Return Value' = @return_value; ''') datas = await session.execute( sql_string, params) await session.commit() return [dict(data._mapping) for data in datas.fetchall()]