我正在尝试使用excel运行动态sql查询,以提取代码列表,这些代码是查询中的变量。
我当前正在尝试存储我的SQL过程以供以后调用,但出现错误。我对此很陌生,因此甚至不确定是否在正确的位置进行此操作。首先,我打开了 Visual Basic ,然后转到插入> 过程。在该屏幕中,我有以下内容:
CREATE PROCEDURE society_detail
Dim code_list
AS
BEGIN
SET NOCOUNT ON;
SELECT DISTINCT client_code , client_name, security_code
FROM Connection1.table_1
WHERE client_code in (@code_list)
ORDER BY client_code
End
作为参考,Connection1是我的SQL连接,该连接已建立并正确连接。当我尝试与此过程建立连接时,出现错误消息“编译错误:预期:语句结束”,并且突出了society_detail。基本上,我试图调用此过程,然后用已经在excel中的数据集填充“ @code_list”。希望这对某人有意义,因为我到处都在搜索互联网,并且似乎没有任何帮助。我可能完全不做我想做的事情。让我知道是否需要更多说明。
谢谢!
答案 0 :(得分:0)
这就是我要做这种事情的方式。
' Set a Reference: Microsoft ActiveX Data Objects 2.8 Library
Sub Working()
Dim con As Connection
Dim rst As Recordset
Dim strConn As String
Set con = New Connection
strConn = "Provider=SQLOLEDB;"
strConn = strConn & "Data Source=Your_server_name;"
strConn = strConn & "Initial Catalog=Your_DB_Name;"
strConn = strConn & "Integrated Security=SSPI;"
con.Open strConn
'Put a country name in Cell E1
Set rst = con.Execute("Exec dbo.MyOrders @BeginDate = " & "'" & ActiveSheet.Range("E1").Text & "'," & "@EndDate = '" & ActiveSheet.Range("E2").Text & "'")
ActiveSheet.Range("A1").CopyFromRecordset rst
rst.Close
con.Close
End Sub
我的工作表如下。
这肯定可以。当然,还有其他方法可以做同样的事情。我会留给您发现其他类似的选项。
参考:
https://www.mssqltips.com/sqlservertip/3436/passing-dynamic-query-values-from-excel-to-sql-server/