我正试图通过Artikelnr
(荷兰语为articleNr
)从我的数据库中删除某些行。
当我尝试从访问中执行我的代码时,它不会抛出错误,但它也不会删除任何内容。
我在这里错过了什么吗?
IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'spVerwijderArtikel')
DROP PROCEDURE spVerwijderArtikel
GO
CREATE PROCEDURE spVerwijderArtikel
(@ArtikelNr integer)
AS
BEGIN Transaction
DELETE FROM artikelprijs
WHERE ArtikelNr = @ArtikelNr
DELETE FROM Artikel
WHERE ArtikelNr = @ArtikelNr
IF @@ERROR <> 0
BEGIN
ROLLBACK
RAISERROR ('Error tijdens het uitvoeren', 16 , 1)
RETURN
END
COMMIT
GO
我的代码来自访问尝试执行存储过程:
Private Sub Command2_Click()
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sConnString As String
sConnString = "Provider=SQLOLEDB;Data Source=.\SQLEXPRESS;" & _
"Initial Catalog=KlantArtikelOpdracht;" & _
"Integrated Security=SSPI;"
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.Open sConnString
Set rs = conn.Execute("EXEC spVerwijderArtikel'" & TxTArtikelNr & "'")
End Sub
有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
添加声明
Alamofire.request("http://jsonplaceholder.typicode.com/users").responseJSON { (response) in
switch response.result {
case .success(let value) :
print(response.request) // original URL request
print(response.response) // HTTP URL response
print(response.data) // server data
print(response.result) // result of response serialization
if let JSON = response.result.value as! [String:AnyObject]!{
print("JSON: ",JSON)
}
case .failure(let error):
print("request failed with error\(error)")
}
}
作为存储过程的第一个语句(在SET NOCOUNT ON;
之前)。如果在执行存储过程时发生错误,那么BEGIN Transaction
将被传递回VBA代码。
其他建议:
不要使用RAISERROR
,因为存储过程不会返回行。
考虑使用Recordset
对象ADODB.Command
和正确.CommandType = adCmdStoredProc
来指定ADODB.Parameter
值。