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()
# 上述步骤可以获取存储过程的返回记录集,但是如何获取存储过程的返回值,也就是其中定义的输出变量值。
请参参考以下代码:
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
调用它们时,encrypted
和non-encrypted
存储过程之间应该没有区别。
【讨论】:
以上是关于sqlalchemy 调用 mssql存储过程如何获取返回值?的主要内容,如果未能解决你的问题,请参考以下文章