我在oracle 10g中插入记录时遇到问题。我正在使用 oledb [带有 dbhelper 类] 从 asp.net 运行参数化查询。在查询中作为参数传递的字段值在执行后在数据库中的末尾有额外的空间。字段的数据类型为 varchar2。仅当使用 适用于 oledb 的 Oracle 提供程序建立连接时,才会出现此问题。当我使用微软提供程序进行甲骨文时,末尾没有插入额外的空格。
预言机数据库是 64 位的。用于访问数据库的客户端版本为 11.2.....
这是一个已知问题还是我错过了一些东西。
建议一些东西,因为我没有想法了。
就在我脑海中,我想到了两个想法。 更改 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;
如果使用 C#,请在将参数传递给查询/存储过程时使用 Trim()
删除前导空格和尾随空格。例如:
param1= TextBox1.Text.Trim();