西班牙
斯潘4
这个sqlcreator/sqlexecutorTransformer不会对数据库运行存储过程或多个SQL语句。这些语句将从SQL+和SQL Developer中运行。如果语句失败,则日志文件中将显示文本,提示用户输入分隔符。
或在Oracle读取器或其他FME转换器中执行带有“;”结尾的SQL查询时返回错误:
错误为`ORA-00911:无效字符
*您可能还会收到其他ORA-*错误。
默认情况下,fme不拆分sql语句,并且期望单个sql语句不会以“;”分隔符结尾。如果要在一个查询中包含多个SQL语句,则可能会出现此问题。如果您从其他工具剪切并粘贴了SQL语句,使其包含“;”,也可能会出现问题。
在中输入SQL查询时sqlexecutor/sqlcreator执行程序或者在reader/writer begin/end sql语句中,参数遵循以下规则:
1)删除单行SQL语句的“;”或其他特殊字符。
2)在“SQL编辑器”对话框的顶部,使用以下语句:
fme_sql_分隔符
例如
fme_sql_分隔符/
任何字符都可以用作分隔符,通常需要用“;”分隔。有时,您可能希望输入一个不在sql中出现的字符,然后将该字符集成到语句中,这样他们就可以精确地控制拆分语句。
例如:
fme_sql_分隔符/声明数;开始选择count(*)到howmanny from states;结束;/
您好!@julien,感谢您的评论!
我认为,当被介绍这篇文章 - 前一段时间 - FME可能会有点不同处理的SQL代码,但我不能肯定。这是没有意义有第二块。实际上有与此代码太另一个问题...
该FME_SQL_DELIMTER设置不正确...(它应该是“/”)和“/”在端部缺失。
不正确的:
FME_SQL_DELIMITER;BEGIN DECLARE的howmany号码;开始选择count(*)到howmanny from states;结束;结束;
正确:
fme_sql_分隔符/声明数;开始选择count(*)到howmanny from states;结束;/
我会做出一个调整的文章,以反映这一点。感谢您指出了这一点!
喜史蒂夫,这是否意味着我们可以运行从SQL创建者PLSQL块,并获得价值从数据库中返回。如果是这样,我们才能看到使用“Atrributes揭露”的结果。我试图执行从SQL创建者PLSQL块,我想从数据库中的一些变量回来。它成功地执行PLSQL块,但无法找到任何结果。
答案是肯定的,但它是一个有点棘手,你需要做的是什么
注意变量是从当前会话中可见,这意味着你可以在一个SQLExecuter设置的值,并从另一个访问它。同样在FMEServer我们可以在同一时间运行多个工作区,这将有自己的变量版本
我没有一个代码示例的权利,但我会看看我能创造的东西
如果你需要运行的Oracle存储过程...
FME_SQL_DELIMITER / BEGIN OWNER.Truncate_Table( 'MYFAVORITE_TABLE');结束;/
在上面的例子中,DBA不会允许通过FME直接表截断声明...但将允许用户调用存储过程做同样的。也许DBA想要跟踪的所有表截断,并会记录有关交易,可能在存储过程,而这样做的截断来完成某些信息。
?2019安全亚搏在线软件公司|合法的