sqlalchemy 调用 mssql存储过程如何获取返回值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlalchemy 调用 mssql存储过程如何获取返回值?相关的知识,希望对你有一定的参考价值。

# 以上主要是建立sqlserver数据库会话等等过程省略
cursor = conn.cursor()
cursor.execute("exec dbo.TrunPage 'docs', 'id,title', 'id ASC', 5, 2, '', ret_1, 0")
results = cursor.fetchall()
# 上述步骤可以获取存储过程的返回记录集,但是如何获取存储过程的返回值,也就是其中定义的输出变量值。

参考技术A

请参参考以下代码:

from pyodbc import drivers, connect, Connection, Cursor

def output_cursor(cursor: Cursor):

...."""打印输出当前结果集"""

....print('-' * 80)

....print(','.join(_[0] for _ in rst.description))

....for row in cursor:

........print(row)


spt = '''

declare @returns int,@count int,@lastDoTime datetime

exec @returns = test_proc_call @count output,@lastDoTime output

select @returns returns,@count count,@lastDoTime lastDoTime

'''

cur = db.execute(spt)

for rst in iter_cursor(cur):

....output_cursor(rst)


输出:

--------------------------------------------------------------------------------

returns,count,lastDoTime

(18, 21, datetime.datetime(2020, 3, 4, 14, 43, 46, 923000))


存储过程:test_proc_call  

create procedure test_proc_call  

    (@p1 int output  

    ,@p2 datetime output  

     )  

as  

begin  

    --此过程有返回值,有output参数,有结果集  

    select @p1=max(id),@p2=max(LastDoTime)  

            from Tasks with(nolock)  

    select * from Tasks with(nolock)  

    return @@rowcount  

end

如何从 Java 调用 MSSQL 加密的存储过程?

【中文标题】如何从 Java 调用 MSSQL 加密的存储过程?【英文标题】:How can I call MSSQL encrypted Stored Procedures from Java? 【发布时间】:2013-08-23 15:17:07 【问题描述】:

有带有加密存储过程的 MSSQL 数据库,我的应用程序看不到它们(我使用不同的 jdbc 驱动程序)。

我有两个问题。

如何获取这些加密存储过程的列表?

【问题讨论】:

【参考方案1】:

如何获得这些加密存储过程的列表?

SELECT SCHEMA_NAME(p.schema_id) + '.' + p.name
FROM sys.procedures p
WHERE OBJECTPROPERTY(p.object_id, 'IsEncrypted')  = 1

如何从 Java 调用 MSSQL 加密的存储过程?

当您从Java 调用它们时,encryptednon-encrypted 存储过程之间应该没有区别。

【讨论】:

以上是关于sqlalchemy 调用 mssql存储过程如何获取返回值?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 java 调用 MSSQL 存储过程

如何从 Java 调用 MSSQL 加密的存储过程?

mssql 存储过程调用另一个存储过程中的结果的方法分享

mssql 存储过程调用另一个存储过程中的结果的方法分享

flask_sqlalchemy 调用存储过程

mssql 存储过程中循环如何写,在循环中用啥语句跳出循环呢,在线等