You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
23 lines
809 B
23 lines
809 B
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()]
|
|
|
|
|