当前位置: 首页 > 知识库问答 >
问题:

调用存储过程中的气流

常乐
2023-03-14

我是Python的新手。我正在使用apache airflow和一个我称之为存储过程oracle的任务。我看到错误非法变量名称/数字

t1 = OracleOperator(
    task_id='Exe_PA',
    oracle_conn_id='DEV_SR',
    parameters=('1', 'TC', 'ESPA', '99', '2', '100', '28-08-2019', '0'),
    sql= 'Begin pno_validacion_inicial(); end;',
    dag=dag)

[2019-08-2918:09:21089]{dbapi_hook.py:168}信息-开始生效();终止带有参数('1','TC','ESPA','99','2','100','28-08-2019','0')[2019-08-29 18:09:21091]{init.py:1580}错误-ORA-01036:非法变量名/编号回溯(最近一次调用):文件“/usr/local/lib/python2.7/dist-packages/aiffort/models/init.py”,第1441行,在_run\u raw\u task result=task\u copy中。执行(context=context)文件“/usr/local/lib/python2.7/dist packages/afflow/operators/oracle_operator.py”,第63行,执行参数=self。参数)文件“/usr/local/lib/python2.7/dist packages/aiffort/hooks/dbapi_hook.py”,第169行,运行cur。执行(s、参数)

共有2个答案

钱照
2023-03-14

引用留档,您可以看到参数需要是映射或可迭代的。您的代码应该像:

t1 = OracleOperator(
     task_id='Exe_PA',
     oracle_conn_id='DEV_SR',
     parameters=({'param1':'1', 'param2':'TC', 'param3':'ESPA', 'param4':'99', 'param5':'2', 'param6':'100', 'param7':'28-08-2019', 'param8':'0'}),
     sql= 'Begin pno_validacion_inicial(:param1, :param2, :param2, :param3, :param4, :param5, :param6, :param7, :param8 ); end;',
     dag=dag)
裴威
2023-03-14

您对pno\u validacion\u inical()的调用不包含任何参数,但正在传递8个参数。您的SQL应该如下所示:

begin pno\u validacion\u initial(:1,:2,:3,:4,:5,:6,:7,:8);结束

 类似资料:
  • 问题内容: 我试图在postgres 9.3上使用sql调用函数内的函数。 这个问题与我的另一篇文章有关。 我写了下面的函数。到目前为止,我还没有合并任何类型的save-output(COPY)语句,因此我试图通过创建嵌套函数print-out函数来解决此问题。 以上功能有效。 尝试创建嵌套函数。 调用嵌套函数。 输出 上面给出了这个。但是,当在print_out()中将arg1,arg2替换为’

  • 问题内容: 我在任何地方都找不到此答案,但是可以从MySQL中的另一个存储过程调用存储过程吗?我想找回标识值,并在父存储过程中使用它。我们不能再使用FUNCTIONS! 问题答案: 参数应该可以帮助您将值返回给调用过程。基于此,解决方案必须是这样的。

  • 我使用JDBC这样调用这个过程: 它向我抛出一个错误,通知调用格式错误。 但是如果我像这样直接在IDE中运行调用:

  • 从1.r.58开始, 支持出参, 之前的版本仅支持入参. 从实现方式上说, 是通过扩展自定义SQL的含义及上下文来实现 仅含义入参的存储过程 // 建表,删除老的存储过程. dao.create(Pet.class, true); dao.insert(Pet.create("wendal")); dao.execute(Sqls.create("DROP PRO

  • 在 osb 12 c. PLS-00653 中调用服务中的存储过程调用管道时遇到错误:PL/SQL 作用域中不允许使用聚合/表函数。如果有人以前遇到过或可以在这里提供帮助?

  • 主要内容:创建CallableStatement对象,关闭CallableStatement对象,JDBC SQL转义语法在讨论JDBC Statement教程文章时,我们已经学习了如何在JDBC中使用存储过程。 本教程文章与该部分类似,但它将讲解演示有关JDBC SQL转义语法的其他信息。 就像对象创建和对象一样,它可使用同样的方式创建对象,该对象将用于执行对数据库存储过程的调用。 创建CallableStatement对象 假设需要执行以下Oracle存储过程 - 注意:上面的存储过程是为O