“使用FME中的SQL过程创建/更新Oracle表…”的注释和答案。 https://knowledge.亚搏在线safe.com/questions/80281/creatingupdate-oracle-table-using-a-sql-procedure.html “使用FME中的SQL过程创建/更新Oracle表…”问题的最新注释和答案。 fritspoulsen12对fritspoulsen12评论的评论 https://knowledge.亚搏在线safe.com/comments/82427/view.html网站

@戴维德。谢谢。现在终于成功了。我一直很怀疑在FME中找到正确的符号,和准确的很难找到例子。做错事太容易了。非常感谢你。

星期二,2018年11月13日09:32:43格林威治标准时间 FRITSPOLSENSE12
大卫·R对大卫·R评论的评论 https://knowledge.亚搏在线safe.com/comments/82423/view.html网站

对不起的,看起来我的参数顺序不对。这应该有效:

结束日期(“@value(d\u start)”,'YYYYMMDDHH24未命中')

“结束日期”功能的文档也可能有用:https://www.technonthenet.com/oracle/functions/to ou date.php

不是说,D_Start总是需要一个值,它不能是暂时的或丢失的。

星期二,2018年11月13日08:58:55格林尼治标准时间 戴维德
fritspoulsen12对fritspoulsen12评论的评论 https://knowledge.亚搏在线safe.com/comments/82419/view.html网站

@戴维德。谢谢,戴维。我希望事情能这么简单。我试过几次组合使用引号,但没有结果。这次我收到这个消息:

没有成功;错误为'ORA-01821:无法识别日期格式

星期二,2018年11月13日08:52:29格林尼治标准时间 FRITSPOLSENSE12
大卫·R对大卫·R评论的评论 https://knowledge.亚搏在线safe.com/comments/82417/view.html网站

看起来您省略了日期值字符串周围的单引号。试试这个:

结束日期(“YYYYMMDDHH24未命中”,'@value(d_start)')
星期二,2018年11月13日08:39:35格林尼治标准时间 戴维德
fritspoulsen12对fritspoulsen12评论的评论 https://knowledge.亚搏在线safe.com/comments/82407/view.html网站

@戴维德,对,我尝试了几种不同的技巧,作为程序中有或没有的论点。要么我有语法错误,或者我收到这样的错误消息:

属性(字符串):`'u reader_error'的值为'a error occurred while accessing a table result for feature type`';消息是'execution of statement'begin fpo.package.xxxx(100005,“基姆”“29209139”,“29209139”,“轮胎漂移”,“迁移1”结束日期(“YYYYMMDDHH24未命中”,20160524133000));

end;“”没有成功;错误为'ora-06550:行1,第116栏:

PLS-00307:与此调用匹配的“到\日期”声明太多

SQLExecutor中的调用如下所示:

fme_sql_分隔符/

开始fpo.package.xxxx(@value(sagsid),'@value(n_anmelder)','@value(v_telefon)','@value(v_telefon)','@value(t_haendelse_type)',@值(init)托达特YYYYMMDDHH24未命中',@值(d_start));

结束;

/

星期二,2018年11月13日07:39:32格林尼治标准时间 FRITSPOLSENSE12
大卫·R对大卫·R回答的评论 https://knowledge.亚搏在线safe.com/comments/82382/view.html网站

你有没有尝试过我下面处理日期/时间戳的技巧?


周一,2018年11月12日格林威治标准时间17:51:52 戴维德
由Fritspoulsn12回答 https://knowledge.亚搏在线safe.com/answers/82356/view.html网站

嗨,你好!最后,它起作用了——但是有一些限制。

似乎你的程序中不能有“入-出”的论点,如果它在包中(没有返回值)。

并且在定义为日期的过程中,不能将Oracle日期属性直接解析为参数。

有没有人有解决这些“问题”的方法?

周一,2018年11月12日14:10:56格林尼治标准时间 FRITSPOLSENSE12
回答:David_r https://knowledge.亚搏在线safe.com/answers/80592/view.html网站

另一个潜在的陷阱是“日期”参数类型。您可能需要格外小心,以便它以Oracle理解的格式出现。如果您的参数是“FME日期格式”,您可以将其转换为这样的Oracle日期对象

结束日期(‘YYYYMMDD’,'@value(我的'fme'u date'u属性)'

结束日期(“YYYYMMDDHH24未命中”,'@value(我的'fme'u date'u属性)'

星期二,2018年10月16日14:35:57格林尼治标准时间 戴维德
回答:David_r 网址:https://knowled亚搏在线ge.safe.com/answers/80591/view.html

错误信息是否仍然完全相同?一字不差?

您有DBA可以与之讨论这个问题吗?如果不知道具体的配置方式和调用过程的方式,很难进行调试。

星期二,2018年10月16日14:31:58格林尼治标准时间 戴维德
由Fritspoulsn12回答 网址:https://knowled亚搏在线ge.safe.com/answers/80584/view.html

@大卫:看起来“非常”像这样:

程序AAAAAA _p(

X进出编号,

varchar2中的y(200字节),

数字Z(20,0),

W为数字(20,0),

varchar中的p(200字节),

日期:

varchar2中的r(10字节));

星期二,2018年10月16日13:16:59格林尼治标准时间 FRITSPOLSENSE12
回答:David_r https://knowledge.亚搏在线safe.com/answers/80582/view.html网站

您还可以考虑联系您的DBA,并询问如何调用存储过程的具体示例,并将其发布在这里,如果可能的话

星期二,2018年10月16日12:58:05格林威治标准时间 戴维德
回答:David_r https://knowledge.亚搏在线safe.com/answers/80581/view.html网站

你能(允许)在这里发布函数头吗?这样我们就能知道函数期望的是什么?

星期二,2018年10月16日12:57:10格林尼治标准时间 戴维德
由Fritspoulsn12回答 https://knowledge.亚搏在线safe.com/answers/80580/view.html网站

@戴维德。再来一次-我也试试。但你是完全正确的——这只是一个用正确语法编写SQL字符串的问题,我很困惑,那就太难了。

星期二,2018年10月16日12:45:48格林尼治标准时间 FRITSPOLSENSE12
回答:David_r https://knowledge.亚搏在线safe.com/answers/80559/view.html网站

不知道程序声明很难分辨,但如果不能从FME中调用程序,我会感到惊讶,因为FME基本上只是将SQL作为字符串发送给Oracle,让数据库处理其余的。所以基本上,只有您自己在FME中正确地“构建”SQL命令字符串。

这就是说,你试过类似的东西吗

声明我的输出参数号:=@value(my fme _属性);开始我的_schema.my _package.my _函数(my _参数=>my _output _参数);结束;
星期二,2018年10月16日07:34:32格林尼治标准时间 戴维德
由Fritspoulsn12回答 网址:https://knowled亚搏在线ge.safe.com/answers/80555/view.html

@戴维德。再次感谢你的努力。然而,似乎不管什么符号,我用做论据,我收到同样的错误信息。然而,参数也定义为输出。过程中的out或in out参数是否可以在sqlExecutor中使用?

星期二,2018年10月16日07:28:18格林尼治标准时间 FRITSPOLSENSE12
回答:David_r https://knowledge.亚搏在线safe.com/answers/80376/view.html网站

基于Oracle错误消息,我猜测过程“kontakt_p”需要一个整数值作为第一个参数(主键?).因为传递的参数周围有引号,它被隐式地解析为字符串而不是整数。所以我的建议是尝试删除第一个参数周围的引号。

所以基本上你是这样做的:

开始我的_schema.my_package.my_函数(my_参数=>@value(my_fm_属性));结束;

而不是这样:

开始我的_schema.my_package.my_函数(my_参数=>'@value(my_fme_属性)';结束;
FRI,2018年10月12日14:18:57格林尼治标准时间 戴维德
由Fritspoulsn12回答 https://knowledge.亚搏在线safe.com/answers/80371/view.html网站

@戴维德。谢谢。我现在可以叫程序了,但失败了,因为我的论点列表中有一些错误-第一个论点显然,哪个是主键??

但我不明白为什么??

访问功能类型“”的表结果时出错;消息是'execution of statement'begin sch_flotssagervs.detail_merge.kontakt_p('53802',“Kim Kruse”“29209139”,“29209139”,“轮胎漂移”,'20160524133000',“迁移1”;

end;“”没有成功;错误为'ora-06550:行1,第51栏:

PLS-00363:表达式“53802”不能用作分配目标

ORA-06550:1号线,第10栏:

end;“”没有成功;错误为'ora-06550:行1,第51栏:

PLS-00363:表达式“53802”不能用作分配目标

ORA-06550:1号线,第10栏:

FRI,2018年10月12日11:33:03格林尼治标准时间 FRITSPOLSENSE12
回答:David_r https://knowledge.亚搏在线safe.com/answers/80286/view.html网站

您可以使用sqleexecutor中的匿名块来执行,例如:

开始我的_schema.my_package.my_函数(my_参数=>'@value(my_fme_属性)';结束;

注意:你应该使用fme_sql_分隔符在这种情况下。

清华大学,2018年10月11日10:50:16格林尼治标准时间 戴维德