0

Oracle10gにレコードを挿入するときに問題が発生します。oledb [dbhelperクラスを使用]を使用して、asp.netからパラメーター化されたクエリを実行しています。実行後にクエリでパラメータとして渡されるフィールドの値には、データベースの最後に余分なスペースがあります。フィールドのデータ型はvarchar2です。この問題は、Oracleプロバイダーforoledbを使用して接続が確立された場合にのみ発生します。オラクル用のマイクロソフトプロバイダーを使用すると、最後に余分なスペースが挿入されません。

Oracleデータベースは64ビットです。DBへのアクセスに使用されるクライアントはバージョン11.2....です。

これは既知の問題ですか、それとも何かが足りないのですか。

アイデアが足りなくなったので、何か提案してください。

4

2 に答える 2

1

頭のてっぺんから、2つのアイデアが思い浮かびます。次のように、INSERT ステートメントを変更して入力を切り捨てます。

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

2 番目のオプション: 次のように、パラメーターを入力として受け取り、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()している場合は、パラメーターをクエリ/ストアド プロシージャに渡すときに使用して、先頭と末尾の両方の空白を削除します。例えば:

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