CREATE OR REPLACE Procedure p_insert_tb_user  
(
id in Number,
name in Nvarchar2,
pwd in Nvarchar2,
regist in Date
)
as
BEGIN
insert into tb_users values (id,name,pwd,to_date(regist,'YYYY-MM-DD HH24:MI:SS'));
commit;
End;
这是我的存储过程,在exec p_insert_tb_user(1,'admin','admin','2010-03-21 12:23:46')调用的时候会显示"文字与格式字符串不匹配",请问是为什么呢?

解决方案 »

  1.   

    regist参数你声明成Date型了,不能再使用to_date来转换,改成如下CREATE OR REPLACE Procedure p_insert_tb_user   
    (
    id in Number,
    name in Nvarchar2,
    pwd in Nvarchar2,
    regist in varchar2;
    )
    as
    BEGIN
    insert into tb_users values (id,name,pwd,to_date(regist,'YYYY-MM-DD HH24:MI:SS'));
    commit;
    End;
      

  2.   

    这样,上面多了;号
    CREATE OR REPLACE PROCEDURE p_insert_tb_user(id     IN NUMBER,
                                                 NAME   IN NVARCHAR2,
                                                 pwd    IN NVARCHAR2,
                                                 regist IN VARCHAR2) AS
    BEGIN
      INSERT INTO tb_users VALUES (id, NAME, pwd, to_date(regist, 'YYYY-MM-DD HH24:MI:SS'));
      COMMIT;
    END;
      

  3.   

    CREATE OR REPLACE Procedure p_insert_tb_user  
    (
    id in Number,
    name in Nvarchar2,
    pwd in Nvarchar2,
    regist in Date
    )
    as
    BEGIN
    insert into tb_users values (id,name,pwd,regist);
    commit;
    End;exec p_insert_tb_user(1,'admin','admin',to_date('2010-03-21 12:23:46','yyyy-mm-dd hh24:mi:ss'));