[英]How to combine multiple SQL Commands into one?
是否可以通過將以下查詢合並到單個SQLCommand中來優化它們?
SqlCommand cmd = new SqlCommand
{
CommandType = CommandType.Text,
CommandText = "DELETE FROM cbu_naslovi WHERE [ID]='" + CurrentID + "'",
Connection = con
};
SqlCommand cmd1 = new SqlCommand
{
CommandType = CommandType.Text,
CommandText = "DELETE FROM cbu_deli WHERE [IDX]='" + CurrentID + "'",
Connection = con
};
cmd.ExecuteNonQuery();
cmd1.ExecuteNonQuery();
編輯:社區建議的工作解決方案如下
SqlCommand cmd = new SqlCommand
{
CommandType = CommandType.Text,
CommandText = "DELETE FROM cbu_naslovi WHERE [ID] = @CurrentID; DELETE FROM cbu_deli WHERE [IDX] = @CurrentID",
Connection = con
};
cmd.Parameters.AddWithValue("@CurrentID", CurrentID);
cmd.ExecuteNonQuery();
是的,您可以使用分號將它們分開。 例如,我有一個代碼,可以在一個調用中執行以下操作
SET NOCOUNT ON;
DECLARE @decimalDate DECIMAL(12,0);
DECLARE @charDate CHAR(12);
DECLARE @utcDate DATETIMEOFFSET;
DECLARE date_cursor CURSOR FOR SELECT {1} FROM {0} WHERE ISNULL({1},0)!=0;
OPEN date_cursor;
FETCH NEXT FROM date_cursor INTO @decimalDate;
WHILE @@FETCH_STATUS=0
BEGIN
BEGIN TRY SET @charDate=CONVERT(CHAR(12),@decimalDate);
SET @utcDate=SwitchOffset(
CONVERT(DATETIME,'20'
+SUBSTRING(@charDate,1,2)+'-'+SUBSTRING(@charDate,3,2)+'-'
+SUBSTRING(@charDate,5,2)+' '+SUBSTRING(@charDate,7,2)+':'
+SUBSTRING(@charDate,9,2)+':'+SUBSTRING(@charDate,11,2)
,121) AT TIME ZONE '{3}',0);
END
TRY BEGIN CATCH
SET @utcDate=SysUtcDateTime();
END CATCH;
BEGIN
TRY UPDATE {0} SET {2}=@utcDate WHERE CURRENT OF date_cursor;
END TRY
BEGIN CATCH END CATCH;
FETCH NEXT FROM date_cursor INTO @decimalDate;
END;
CLOSE date_cursor;
DEALLOCATE date_cursor;
也有例外。 例如,“創建過程”語句必須是塊的第一條語句。 但是大多數DML可以像這樣被批處理。
您可以這樣寫:
SqlCommand cmd = new SqlCommand
{
CommandType = CommandType.Text,
CommandText = $"DELETE FROM cbu_naslovi WHERE [ID]='{CurrentID}';DELETE FROM cbu_deli WHERE [IDX]='{CurrentID}'",
Connection = con
};
如果您需要運行“非查詢”操作,則可以嘗試使用Server
對象執行一堆命令。 好處:您可以在SQL語句中使用GO
。 Command
不允許使用GO
。
server.ConnectionContext.ExecuteNonQuery("your SQL statement -- could be 100 statements with hundrends of GO commands", ExecutionTypes.Default)
服務器變量的類型為Server
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.