我有下面的C#代碼來檢查記錄是否存在,插入並返回id。但如果記錄存在,我也需要返回值。我應該對C#和SQL部分做出什麼改變纔會發生?數據庫是sQL服務器。我仍然必須爲此使用ExecuteScalar()嗎?如果記錄存在則返回ID,否則插入並返回ID
con.Open();
// Insert ClinRefFileTypeMaster
string command1 = string.Format(
"if NOT exists (select * from [ClinRefFileTypeMaster] where [ClinRefTypeName] = '{0}') Insert into [ClinRefFileTypeMaster] ([ClinRefTypeName]) output INSERTED.[ClinRefTypeID] VALUES('{0}')",
dataToParse[i][0]
);
SqlCommand ClinRefFileTypeMaster = new SqlCommand(command1, con);
// check if there is an value
object checkValue = ClinRefFileTypeMaster.ExecuteScalar();
if (checkValue != null)
ClinRefFileTypeId = (int)checkValue;
也許你需要MERGE語句 – Steve
也許拆分語句。只在if塊中插入。選擇外面。 SQL對緩存來說非常好,如果你剛剛插入了一些東西,選擇它可能會非常快。此外,查詢很難閱讀,請使用@開頭,將其製作成多行字符串。 – MrFox
這看[Little Bobby Tables](http://bobby-tables.com/)不知道。 –