2012-06-14 75 views
0

我在oracle 10g中插入記錄時遇到問題。我正在使用oledb [使用dbhelper類]從asp.net運行參數化查詢。在查詢中作爲參數傳遞的字段的值,在執行後在數據庫中末尾有額外的空間。字段的數據類型是varchar2。只有在使用Oracle提供商進行oledb連接時纔會出現此問題。當我爲oracle使用微軟提供程序時,最後沒有插入額外的空間。在oracle插入期間添加尾隨空間

oracle數據庫是64位的。用於訪問數據庫是11.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; 
+0

或插入 – Randy

+0

之前修剪值預INSERT觸發器這很好。我們可以截斷輸入。但我沒有得到理由,爲什麼得到了額外的空間。即使有什麼像參數值那樣。 –

0

如果使用C#,則使用Trim(),同時將參數傳遞給查詢/存儲過程以除去前導空白和尾隨空白。 如:

param1= TextBox1.Text.Trim();