Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle存储过程在Toad中执行,但不在SSIS执行SQL任务中执行,get Literal不';不匹配格式字符串_Oracle_Ssis_Ssis 2012 - Fatal编程技术网

Oracle存储过程在Toad中执行,但不在SSIS执行SQL任务中执行,get Literal不';不匹配格式字符串

Oracle存储过程在Toad中执行,但不在SSIS执行SQL任务中执行,get Literal不';不匹配格式字符串,oracle,ssis,ssis-2012,Oracle,Ssis,Ssis 2012,我有一个有趣的问题。如果我在Toad中执行代码,无论我通过哪个公司,它都会成功执行。如果在执行SQL任务中执行相同的脚本,则会出现一个错误,说明文本与格式字符串不匹配 脚本: declare company varchar(3); runid number; transcount number; returncode number; begin company:='APC'; runid:=0; transcount:=0; returncode:=0; storedprocedurenam

我有一个有趣的问题。如果我在Toad中执行代码,无论我通过哪个公司,它都会成功执行。如果在执行SQL任务中执行相同的脚本,则会出现一个错误,说明文本与格式字符串不匹配

脚本:

declare
company varchar(3);
runid number;
transcount number;
returncode number;

begin
company:='APC';
runid:=0;
transcount:=0;
returncode:=0;

storedprocedurename(company, runid, transcount, returncode);

end;
Oracle中存储过程的开始:

CREATE OR REPLACE PROCEDURE storedprocedurename
   (company_code IN INTERFACE_LOG.company_code%TYPE,
    run_id IN OUT NUMBER,
    transaction_count IN OUT NUMBER,
    return_code IN OUT NUMBER )
SSIS中的错误:

[Execute SQL Task] Error: Executing the query "declare
company varchar(3);
runid number;
transcou..." failed with the following error: "ORA-01861: literal does not match format string
ORA-06512: at "triggername", line 20
ORA-04088: error during execution of trigger 'triggername'
ORA-06512: at "storedprocedurename", line 209
ORA-01861: literal does not match format string
ORA-06512: at "triggername", line 20
ORA-04088: error during execution of trigger 'triggername'
ORA-06512: at "storedprocedurename", line 135
ORA-06512: at line 1". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.

关于SSI无法正确转换参数的原因,有什么建议吗?

您发布的任何内容都不可能成为
ORA-01861
的原因。当您使用一种格式传递字符串并对其应用
to_date
函数(该函数使用完全不相关的格式掩码)时,它通常与
日期
数据类型相关。例如:

SQL> select to_date('23062020', 'yyyy-mm-dd') from dual;
select to_date('23062020', 'yyyy-mm-dd') from dual
               *
ERROR at line 1:
ORA-01861: literal does not match format string


SQL>
但是,如果格式掩码与字符串匹配,则它可以工作:


检查代码的其余部分,看看是否执行了类似的操作,可能是依靠Oracle的功能将字符串隐式转换为日期(但失败)。蟾蜍可能使用了与SSIS不同的NLS设置,我说不出来。

太愚蠢了,在存储过程中,它调用了一个包含日期的函数。我改变了下面的代码,现在这个工作

是:

改为:

sWeek := TO_CHAR(:NEW.week_ending_date,'WW');
sYear := TO_CHAR(:NEW.week_ending_date,'YY');

进程中没有to_日期,有两个to_字符(SYSDATE,'MM/DD/YYYY')。我会检查NLS设置。这个TO_CHAR看起来不错,没有问题。祝你好运啊,是的-正如错误堆栈所说,看看第135行和第209行的存储过程,以及第20行的触发器(我怀疑它只是调用了这个过程);触发行20刚刚声明了一个变量:nWeekEndingDayOfWeekContract编号;不过感谢您的建议。如果第135行是在异常处理程序部分中提出的,请删除(注释)它。这将迫使Oracle显示实际的错误行,这可能会给您提供线索。
sWeek := TO_CHAR(TO_DATE(:NEW.week_ending_date,'dd-mon-yy'),'WW'); 
sYear := TO_CHAR(TO_DATE(:NEW.week_ending_date,'dd-mon-yy'),'YY');
sWeek := TO_CHAR(:NEW.week_ending_date,'WW');
sYear := TO_CHAR(:NEW.week_ending_date,'YY');