Oracle存储过程代码如下:
create procedure test_procedure(id_in in number,del_num out number) as begin select count(*) into del_num from test t where t.id = id_in ; delete from test t where t.id = id_in ; commit;end;/
python调用代码如下:
from sqlalchemy import create_engine , textfrom sqlalchemy.orm import sessionmakerfrom configs import url# 创建数据库连接engine = create_engine(url)# 创建会话Session = sessionmaker(bind=engine)session = Session()# 调用存储过程result = session.execute(text("CALL test_procedure(:param1, @out_param)"), {'param1': 3})# 获取输出参数的值out_param_value = session.execute("SELECT @out_param").scalar()# 打印输出参数的值print(out_param_value)
执行python报错信息:
DatabaseError: (cx_Oracle.DatabaseError) ORA-00936: missing expression
咨询了GPT给了如下的代码:
from sqlalchemy import create_enginefrom sqlalchemy.orm import sessionmakerfrom sqlalchemy import outparamfrom configs import url# 创建数据库连接engine = create_engine(url)# 创建会话Session = sessionmaker(bind=engine)session = Session()# 调用存储过程result = session.execute("BEGIN test_procedure(:alarmid, :del_num); END;", {'alarmid': 123, 'del_num': outparam.Parameter(int)})# 获取输出参数的值out_param_value = result.fetchone()['del_num']# 打印输出参数的值print(out_param_value)
结果报错:
AttributeError: 'function' object has no attribute 'Parameter'
所以究竟怎么才能通过SQLAlchmey调用存储过程正常获取出参呢?
用outparam方法:
from sqlalchemy import create_enginefrom sqlalchemy.orm import sessionmakerfrom sqlalchemy.sql import outparamfrom configs import url# 创建数据库连接engine = create_engine(url)# 创建会话Session = sessionmaker(bind=engine)session = Session()# 调用存储过程result = session.execute( "BEGIN test_procedure(:param1, :out_param); END;", {'param1': 123, 'out_param': outparam('out_param', int)})# 获取输出参数的值out_param_value = result.out_parameters['out_param']# 打印输出参数的值print(out_param_value)
问题内容: 与PHP中的mysql中的存储过程无关,文档完全缺乏。我目前有一个通过PHP调用的存储过程,如何获取out参数的值? 问题答案: 它看起来像在这篇文章中回答: http://forums.mysql.com/read.php?52,198596,198717#msg-198717 使用mysqli PHP API: 假设sproc myproc(IN i int,OUT j int):
问题内容: 我正在将MyBAtis-3与MyBAtis- Spring一起使用。当我尝试调用使用MyBatis批注返回多个参数的存储过程时。我什么也没得到,我可以看到输入参数已传递到日志中的SP,并且挂在那里,没有进度,也没有抛出异常。 PFB我试图从MyBAtis访问的Oracle存储过程, PFB映射器接口方法, Test对象包含在存储过程调用语句中作为输入传递的参数。 当我执行此操作时,它会
问题内容: 我使用的是SQL Server2005。我创建了一个大多数时候都可以使用的存储过程,但是我发现了一个实例,它无法满足我的要求。 目前,代码执行的操作是这样的 输出变量在哪里。 因此,我可以得到一个数字,但我真正想要的只是SQL错误。 像 Hey之类的 东西 ,我不能这样做,因为在此列上有fk约束 或其他 约束 。我在msdn http://msdn.microsoft.com/zh-
问题内容: 我有一个需要很多参数的插入存储过程-其中2个是@ FirstName,@ LastName。我还有一个更新存储过程,该过程需要许多参数-其中2个是@ FirstName,@ LastName。 我想做的是,从插入SP内部完成之后,调用更新SP并将其发送给@ FirstName,@ LastName。 我不知道这样做的正确语法;我试过了: 但我认为这是错误的。 有人可以告诉我怎么写这个电
本文向大家介绍Sql Server 存储过程调用存储过程接收输出参数返回值,包括了Sql Server 存储过程调用存储过程接收输出参数返回值的使用技巧和注意事项,需要的朋友参考一下 创建存储过程: 接收输出参数: 2,带返回值 创建存储过程: 接收返回值: 以上所述是小编给大家介绍的Sql Server 存储过程调用存储过程接收输出参数返回值,希望对大家有所帮助,如果大家有任何疑问请给我留言,小
mYSQL存储过程的错误: 存储过程如下: 报错:Procedure execution failed 1054 - Unknown column '王小李' in 'field list' 只要传值进去就报字段不在列表中,当我把 DataName 改成int 整型的时候运行可以,当为字符串运行就报错。请教高手要这么处理?