2012-09-20 43 views
0

我有下面的VB語句來插入文本數據到SQL 2008數據庫。如何在執行插入操作時檢查sFieldNameList列中是否存在sValueList?插入語句中的查詢?

sInsertStatement = "INSERT " & sTableName 
        & "(" & sFieldNameList & ") VALUES(" 
        & Mid(sValueList , 3) & ")" 
+0

難道你是有問題的SQL或VBScript? – RedFilter

回答

1

我會如下做到這一點:

"IF NOT EXISTS (SELECT * FROM " & sTableName * " 
       WHERE " & sFieldNameList & " = " & sValueList & ") 
BEGIN 
    "INSERT " & sTableName 
       & "(" & sFieldNameList & ") VALUES(" 
       & Mid(sValueList , 3) & ")" 
END 

(這需要雖然能夠適應一個VBScript語法!)

+0

我想我可能會失去一件事,也許我不應該這樣做,但已經有一段時間了。在if語句中,我是否像執行objConn.execute那樣執行? IF NOT EXISTS(objConn.execute「SELECT LN FROM」&sTableName *「WHERE LN =」&sValueList(0)&「) –

+0

是的,沒錯,您可以將整個SQL語句作爲單個參數傳遞給objConn.execute 。 – Vikdor

0

你需要做的任何更新或插入?你需要的是一個UPSERT命令。基本上你需要一個WHERE子句,如:

where not exists (select 1 from mytable where col2='myId'). 

here的Postgres如何做到這一點。

SQL2008不具有相同的功能,但check this blog(頁面結束),他們這樣做:

USE [MyDatabase] 
GO 
merge into mytable as Target 
using mytable2 as Source 
on Target.id=Source.id 
when matched then 
update set Target.name=Source.name, 
Target.Salary = Source.Salary 
when not matched then 
insert (id,name,salary) values (Source.id,Source.name,Source.Salary);