【问题标题】:stored procedure in informixinformix 中的存储过程
【发布时间】:2014-01-15 17:56:49
【问题描述】:

我试图在informix 中创建一个示例存储过程,但它给了我一个语法错误。谁能说说这有什么问题?

drop procedure if exists sample(); 
create dba procedure sample() 
update employee set last_name="Tietz"  where emp_id = '2537';  
end procedure;

谢谢

【问题讨论】:

  • 在 SQL 中避免使用" 字符串分隔符。使用标准'。包括 Informix 在内的一些数据库可以很好地与 " 配合使用,但它不是标准的。
  • 对我来说 emp_id 看起来像 SERIAL 或其他数字字段。如果它是数字,那么您可以简单地使用emp_id = 2537;
  • 感谢您的回复。drop procedure if exists sample(); create dba procedure sample() end procedure;update employee set last_name='Tietz' where emp_id = '2537'; 分别工作正常,但组合时,它们会给我一个语法错误。我很困惑...
  • 这真的取决于您用来运行此类 SQL 的工具/驱动程序。一些驱动程序能够一次运行多条 SQL 语句,而另一些驱动程序只能运行一条语句。我使用 Informix ODBC 和 JDBC 驱动程序,它们可以一次运行许多语句。您的示例适用于我使用的工具(我删除了IF EXISTS,因为我使用了IBM Informix Dynamic Server Version 11.50.FC4)。

标签: informix proc


【解决方案1】:

IF EXISTS 子句仅在最新版本的 Informix 中可用。我手头有几个实例:11.50.FC2 和 11.70.FC7。声明 DROP PROCEDURE IF EXISTS foobar() 仅适用于后者。

我觉得其余的都还可以。

【讨论】:

  • 感谢您的回复.. 问题不在于 IF EXISTS.. drop procedure if exists sample(); create dba procedure sample() end procedure;update employee set last_name="Tietz" where emp_id = '2537'; 单独工作正常,但组合时,它们会给我一个语法错误。我很困惑...
  • 我将您的CREATE DBA PROCEDURE ... 代码复制并粘贴到我的一个实例上的会话中,它创建的过程正常。显然我没有尝试运行它,没有基础表。我假设我们谈论的是创建时的错误,而不是试图调用该过程?
猜你喜欢
  • 2012-07-28
  • 2012-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多