literal与格式字符串ORA-06512不匹配

时间:2017-02-25 09:17:30

标签: php oracle codeigniter

我正在使用带有PHP codeigniter的Oracle 10g。

我有一个存储过程,我通过SQL命令行运行命令行。

这是我的程序: -

CREATE OR REPLACE PROCEDURE 
        insertMovie (id IN NUMBER, title IN VARCHAR2, 
            sdate IN DATE, edate IN DATE,
                        image IN VARCHAR2, add_date IN DATE,
            message OUT NUMBER) 
    AS
        BEGIN
            INSERT INTO tbl_movie (movie_id, movie_title, movie_sdate, movie_edate, movie_image, movie_add_date) 
            VALUES ( id, 'title', to_date(sdate, 'yyyy-mm-dd hh24:mi:ss'), to_date(edate, 'yyyy-mm-dd hh24:mi:ss'), 'movie_image', to_date(add_date, 'yyyy-mm-dd hh24:mi:ss'));
            message := 1;
        EXCEPTION
          WHEN OTHERS THEN
            message := 0;
        END;
/

现在,我正在尝试通过PHP(codeigniter)插入数据。 这是我的模型功能: -

function add_movie($entity,$insertData,$time)
{
    $conn   = oci_connect("XXXXXX", "XXXXXX","XXXXXXX");
    if(!$conn)
    {
        echo "connect failed".oci_error();
    }   
    else
    {   
        echo "connect done at".date('d-m-y');

        // calling stored procedure insertMovie
        $insertMovieProcedureSQL = "BEGIN insertMovie(:id, :title, :sdate, :edate, :image , :add_date, :message); END;";
        $stmt = oci_parse($conn, $insertMovieProcedureSQL);
        //  Bind the input parameter
        oci_bind_by_name($stmt,':id',$insertData['movie_id']);
        oci_bind_by_name($stmt,':title',$insertData['movie_title']);
        oci_bind_by_name($stmt,':sdate',$insertData['movie_sdate']);
        oci_bind_by_name($stmt,':edate',$insertData['movie_edate']);
        oci_bind_by_name($stmt,':image',$insertData['movie_image']);
        oci_bind_by_name($stmt,':add_date',$insertData['movie_add_date']);

        // Bind the output parameter
        oci_bind_by_name($stmt,':message',$message,32);
        // Assign a value to the input 
        //$name = 'Harry';
        oci_execute($stmt);
        // $message is now populated with the output value
        echo "$message\n";
    }   
}

我从控制器调用这个函数: -

public function testMovie()
{
    $insertData['movie_id'] = 1;
    $insertData['movie_title']= 'test';
    $insertData['movie_sdate']= '2017-02-24 00:00:00';
    $insertData['movie_edate']= '2017-02-27 00:00:00';
    $insertData['movie_image']= 'rfgt';
    $insertData['movie_add_date']= '2017-02-20 00:00:00';
    $this->load->model('oracle_model');
    $return = $this->oracle_model->add_movie('movie',$insertData,'');   
}

我收到此错误消息:

Message: oci_execute(): ORA-01861: literal does not match format string ORA-06512: at line 1
我能解决这个问题吗?

0 个答案:

没有答案