私は、私の知られているON DUPLICATE KEY UPDATE
をSQL Serverで動作する新しいアプリケーションに実装しようとしています。これはMySQLでのみ可能なので、次のコードを記述しましたが、パラメータを追加するときにエラーが発生します。C#で動的SQLにパラメータを追加
これらはエラーメッセージです:
ERROR [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Die @FaeBezeichnung-Skalarvariable muss deklariert werden.
ERROR [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Die @VeraendertAm-Skalarvariable muss deklariert werden.
ERROR [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Die @mitIDref-Skalarvariable muss deklariert werden.
マイコードは次のようになります。
ます。strSQL:
DECLARE @faeID AS int
begin tran
SELECT @faeID = faeID FROM mdb_Faehigkeiten WHERE kurzBez = @FaeBezeichnung
UPDATE mdb_Faehigkeiten WITH (serializable)
SET VeraendertAm = @VeraendertAm
WHERE mitIDref = @mitIDref AND faeIDref = @faeID
if @@rowcount = 0
begin
INSERT mdb_Faehigkeiten (mitIDref, faeIDref, VeraendertAm)
VALUES (@mitIDref, @faeID, @VeraendertAm)
end
commit tran
C番号:
OdbcConnection conn = GetConnection();
OdbcCommand cmd = new OdbcCommand(strSQL, conn);
cmd.Parameters.Add("@mitIDref", OdbcType.Int).Value = dgv[0, item.iRow].Value;
cmd.Parameters.Add("@VeraendertAm", OdbcType.DateTime).Value = dgv[item.iColumn, item.iRow].Value;
cmd.Parameters.Add("@FaeBezeichnung ", OdbcType.VarChar).Value = dgv.Columns[item.iColumn].HeaderText;
try
{
conn.Open();
cmd.ExecuteNonQuery();
}
catch { throw; }
finally { conn.Close(); }
は、誰もがこれで私を助けることができる、または動的SQL文にパラメータを実装するために基本的に可能ではないでしょうか?
はkurzBez = @ FaeBezeichnung' – Steve
私はパラメータを追加mdb_Faehigkeitenからあなたのクエリsyntax_ 'SELECT @faeID = faeIDを修正:)、パラメータのリストを取得するために私が
sp_batch_params
は、このようにストアドプロシージャを拡張使用します彼らはとにかく置き換えられないのですか?さて、上記のコメントは最初のエラーを修正しました=)...しかし、宣言はまだ "不足しています" – Diego私は構文が間違っていました...間違ったテーブル。しかし、***はい***、私は 'すべての変数を宣言しなければならなかった、彼らはどこに置き換えられません。 – Diego