我在oracle 10g中插入记录时遇到问题。我正在使用oledb [使用dbhelper类]从asp.net运行参数化查询。在查询中作为参数传递的字段的值,在执行后在数据库的末尾有额外的空格。字段的数据类型是varchar2。仅当使用Oracle提供程序为oledb建立连接时,才会出现此问题。当我使用microsoft provider for oracle时,最后不会插入额外的空间。
oracle数据库是64位。 用于访问数据库的客户端版本为11.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();