斯潘8
斯潘4
这个sqlCreator/sqlExecutorTransformer不会对数据库运行存储过程或多个SQL语句。这些语句将同时从SQL+和SQL开发人员运行。如果语句失败,日志文件中将显示文本,提示用户输入分隔符。
或者在Oracle读卡器或其他FME转换器中执行带有尾随“;”的SQL查询时返回错误:
错误为'ORA-00911:无效字符
默认情况下,FME不会拆分SQL语句,并且期望单个SQL语句不会以“;”分隔符结尾。如果希望在一个查询中包含多个SQL语句,则这可能是一个问题。如果您从其他工具剪切和粘贴了SQL语句,那么它也可能是一个问题,这样它就包括“;”
在中输入SQL查询时,sqlExecutor/sqlCreator或者在reader/writer begin/end sql语句中,参数遵循以下规则:
1)删除用于单行SQL语句的“;”或其他特殊字符。
2)在“SQL编辑器”对话框的顶部,使用以下语句:
fme_sql_分隔符
例如
fme_sql_分隔符/
任何字符都可以用作分隔符,通常,您将希望按“;”分隔。有时,您可能希望输入一个不出现在SQL中的字符,然后将该字符集成到语句中,以便它们能够精确控制拆分语句。
例如:
fme_sql_分隔符/声明有多少个数字;从状态开始选择计数(*)到多少;结束;
您好!@朱利安,谢谢你的评论!
我认为,当这篇文章被介绍时(相当长一段时间以前),FME对SQL代码的处理可能有些不同,但我不能确定。第二个街区没有意义。事实上,这个代码还有另一个问题…
未正确设置故障模式与后果分析交付器…(应该是“/”),末尾缺少“/”。
不正确的:
fme_sql_delimiter;begin声明有多少个数字;从状态开始选择计数(*)到多少;结束;结束;
对的:
fme_sql_分隔符/声明有多少个数字;从状态开始选择计数(*)到多少;结束;
我将对这篇文章做一些调整以反映这一点。感谢您指出这一点!
嗨,史提夫,这是否意味着我们可以从SQL创建者运行PLSQL块,并从数据库中获取返回的值。如果可以,我们可以看到使用“要公开的属性”的结果。我正在尝试从SQL Creator执行PLSQL块,我希望从数据库中返回一些变量。它成功地执行了一个PLSQL块,但找不到任何结果。
如果需要在Oracle中运行存储过程…
fme_sql_delimiter/begin owner.truncate_table('myFavorite_table');end;/
在上面的例子中,DBA不允许通过FME直接截断表语句…但允许用户调用存储过程来执行相同的操作。也许DBA想要跟踪所有的表截断,并可记录有关交易的某些信息,可以在执行截断时在存储过程中执行。
?2019安全亚搏在线软件公司|合法的