0

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

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

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

建议一些东西,因为我已经没有想法了。

4

2 回答 2

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;
于 2012-06-15T11:09:35.343 回答
0

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

param1= TextBox1.Text.Trim();
于 2012-06-19T06:43:49.983 回答