在oracle中插入期间添加了尾随空格

时间:2012-06-14 17:11:54

标签: oracle oracle10g oledbconnection

我在oracle 10g中插入记录时遇到问题。我正在使用oledb [使用dbhelper类]从asp.net运行参数化查询。在查询中作为参数传递的字段的值,在执行后在数据库的末尾有额外的空格。字段的数据类型是varchar2。仅当使用Oracle提供程序为oledb建立连接时,才会出现此问题。当我使用microsoft provider for oracle时,最后不会插入额外的空间。

oracle数据库是64位。 用于访问数据库的客户端版本为11.2 .....

这是一个已知问题还是我遗漏了一些东西。

建议一些事情,因为我的想法已经用完了。

2 个答案:

答案 0 :(得分:1)

在我的头脑中,我想到了两个想法。更改INSERT语句以截断其输入,如:

INSERT INTO SOME_TABLE (FIELD1, FIELD2, FIELD3)
  VALUES (TRUNC(@param1), TRUNC(@param2), TRUNC(@param3))

第二个选项:编写一个存储过程,接受参数作为输入并在INSERT语句中截断它们,如:

CREATE OR REPLACE PROCEDURE INSERT_INTO_TABLE(pParam1  IN  VARCHAR2,
                                              pParam2  IN  VARCHAR2,
                                              pParam3  IN  VARCHAR2) IS
BEGIN
  INSERT INTO SOME_TABLE(FIELD1, FIELD2, FIELD3)
    VALUES (TRUNC(pParam1), TRUNC(pParam2), TRUNC(pParam3));
EXCEPTION
  WHEN OTHERS THEN
    NULL;  -- do something appropriate here
END INSERT_INTO_TABLE;

答案 1 :(得分:0)

如果使用C#,请在将参数传递给查询/存储过程时使用Trim()以删除前导和尾随空格。 例如:

param1= TextBox1.Text.Trim();