2016-11-14 15 views
1

私はストアドプロシージャをC#コードに移動します。私はちょうどコピーし、私はC#コードでC#でSQLキーワードを使用するMySqlCommand.CommandText

Begin 
SET @Id = null; 
IF ?Status = 0 THEN SET ? ?DateToday = UTC_TIMESTAMP(); END IF; 
SELECT * FROM TABLE 
END 

のようなものを持っているストアドプロシージャで は内部の開始および終了のすべてを貼り付けました。同様に、

MySqlCommand command = new MySqlCommand(); 
command.CommandText = @"SET @Id = null; 
IF ?Status = 0 THEN SET ? ?DateToday = UTC_TIMESTAMP(); END IF; 
SELECT * FROM TABLE" 

誤った構文を示すIf文にエラーがあります。ストアドプロシージャは動作していますが、私はC#コードに配置していません。

+0

なぜ使用しないのですか?command.CommandText = "SELECT * FROM TABLE" – Damith

+0

ストアドプロシージャにはパラメータがありますか? –

+0

@Damithその単なる例ですが、SetとIf文はエラーを引き起こしています。 – Cosytyle

答えて

0

ストアドプロシージャを作成した場合は、次のようなストアドプロシージャ構文を使用してストアドプロシージャを呼び出すことができます。

using (SqlConnection con = new SqlConnection(someconnectionstring)) { 
    using (SqlCommand cmd = new SqlCommand("myStoredProc", con)) { 
     cmd.CommandType = CommandType.StoredProcedure; 
     //If you have parameters in your SP, add like this else ignore below line 
     cmd.Parameters.Add("@myparam", SqlDbType.VarChar).Value = somevalue; 

     con.Open(); 
     cmd.ExecuteNonQuery(); 
    } 
    } 
+0

@Cosytyle; - それを行う特定の理由。それは良いコーディング慣行ではないので? –

1

これは、ストアドプロシージャのロジックではありません。その名前が示すように、ストアドプロシージャとは、データベース自体に格納されている関数です。そして、あなたは彼らの名前を呼び出すことによってそれらを呼び出すことができます。

したがって、ストアドプロシージャの関数コードをC#コードに入れることはできません。 だけこのlinkをチェックしてください(そうif-elseブロックと)T-SQLステートメントを使用する場合:

更新

+0

私は理解していますが、C#CommandTextのSetとIf文の対応は何ですか?btwあなたに感謝します:) – Cosytyle

+0

よろしくお願いします。答えを更新しました。 –

関連する問題