ORA-01008并非所有变量都绑定(合并语句)

时间:2013-02-13 14:49:48

标签: c# oracle oledb ora-01008

我想知道我在下面的代码中做错了什么。我正在尝试将oledbparameters传递给合并声明。

cmd.CommandText = "MERGE INTO MAPPINGS " +
                          "USING DUAL " +
                          "ON ( MAP_KEY = ? AND MAP_FROM = ? ) " +
                          "WHEN MATCHED THEN UPDATE SET MAP_TO = ? " +
                          "WHEN NOT MATCHED THEN INSERT (MAP_ID, MAP_KEY, MAP_FROM, MAP_TO) " +
                          "VALUES (seq_mappings.nextval,UPPER(?),LPAD(?,10,'0'),UPPER(?)) ";


            cmd.Parameters.Add("MAP_KEY1", OleDbType.VarChar);
            cmd.Parameters.Add("MAP_FROM1", OleDbType.VarChar);
            cmd.Parameters.Add("MAP_TO1", OleDbType.VarChar);
            cmd.Parameters.Add("MAP_KEY2", OleDbType.VarChar);
            cmd.Parameters.Add("MAP_FROM2", OleDbType.VarChar);
            cmd.Parameters.Add("MAP_TO2", OleDbType.VarChar);

            cmd.Parameters["MAP_KEY1"].Value = "AUART";
            cmd.Parameters["MAP_FROM1"].Value = cs_.CustomerNr;
            cmd.Parameters["MAP_TO1"].Value = cs_.AUART;
            cmd.Parameters["MAP_KEY2"].Value = "AUART";
            cmd.Parameters["MAP_FROM2"].Value = cs_.CustomerNr;
            cmd.Parameters["MAP_TO2"].Value = cs_.AUART;

            cmd.ExecuteNonQuery();

在调试时,我可以看到传递给参数的所有值都不为null,但后来我得到“ORA-01008 - 并非所有变量都绑定了”。<​​/ p>

我认为我正在以错误的方式解析参数,但我不知道究竟是怎样的正确方法。我也知道oledbcommand也不支持命名参数。所以我尝试按照正确的顺序传递参数......但也没有成功结果。

非常感谢,对不起我的英语

0 个答案:

没有答案