0

ExcuteNonQuery を実行すると、ORAC 0936 が発生します。私の問題は、SQL の VALUES セクションにあると思います。よろしくお願いいたします。

public int NewFunction(int UserID, string fName, string fDescription, string connectionStr)
        {
            OracleConnection connection = new OracleConnection(connectionStr);
            try
            {
                //PLease Note that User ID and  fDescription are passed into the function as  
//parameters
                connection.Open();

                OracleCommand command = connection.CreateCommand();

                OracleTransaction transaction = connection.BeginTransaction();
                command.Transaction = transaction;
                        string LoadedFileName = @WfName;//Fd.FileName;
               //read the xaml content from file 
                command.CommandText = "INSERT INTO XYZ(ID, NAME , F_SCRIPT) VALUES (@UserID, @fDescription, EMPTY_CLOB())";

                command.ExecuteNonQuery();
                transaction.Commit();
               }

/////////////////////////////////////////////// /////////////////// // * ** * ** * ** * ** * ** * ** * ** * ** * ** * * //OK、すべての返信に感謝します。これは、stackckoverflowの他の投稿を他の質問に使用して、私がそれを機能させる方法です。fDescription と USerID が関数に渡されることに注意してください。

command.CommandText = "INSERT INTO IMS_Workflow (ID, NAME , F_SCRIPT) VALUES ('" + UserID + "', '" + WfDescription + "', EMPTY_CLOB())";

4

2 に答える 2

3

何か不足している可能性がありますが、パラメーター @UserID または @fDescription をコマンド オブジェクトのパラメーター コレクションに追加している場所がわかりません。それらを追加すれば、大丈夫だと思います。

于 2012-09-17T15:12:57.107 に答える
2

元のコードは、パラメーター化された SQL を使用しようとしているようです。

command.CommandText = "INSERT INTO XYZ(ID, NAME , F_SCRIPT) VALUES (@UserID, @fDescription, EMPTY_CLOB())";

...しかし、パラメーターのを設定することはなく、SQL Server スタイルの名前 (@の代わりにプレフィックス:) を使用しています。パラメータを適切に宣言し、値を与える必要があります。

command.CommandText = "INSERT INTO XYZ(ID, NAME , F_SCRIPT) VALUES (:UserID, :fDescription, EMPTY_CLOB())";
command.Parameters.Add("UserId", OracleType.Number).Value = userId;
command.Parameters.Add("fDescription", OracleType.NVarChar).Value = fDescription;

(接頭辞 of@も同様に機能する可能性があります。ドキュメントでは例のみを使用しています。)

回避策は、値を SQL に直接埋め込むことです。これをしないでくださいSQL インジェクション攻撃を招いています。

于 2012-09-17T16:29:41.367 に答える