gpt4 book ai didi

sql - 在单元格上执行 Oracle 查询的最佳方式?

转载 作者:搜寻专家 更新时间:2023-10-30 20:32:13 24 4
gpt4 key购买 nike

我有一个 Excel 电子表格,其中一个单元格包含串联的姓名和姓氏(不要问为什么)。例如,单元格 A2:BLOGGSJOE

在此单元格上,我想运行以下 SQL 并将其输出到单元格 A3、A4 和 A5:

SELECT i.id, i.forename, i.surname FROM individual i  WHERE UPPER(REPLACE('" & A2 & "', ' ', '')) =  UPPER(REPLACE(i.surname|| i.forename, ' ', ''))  AND NVL(i.ind_efface, 'N') = 'N'

知道如何对每个单元格执行 Oracle 查询并返回结果吗?

我已经在 Excel 中启用了 Oracle 数据源连接,只是不确定现在该做什么。

这是一种愚蠢的方法吗,你能推荐一个更好更熟练的方法吗?

我知道我可以只编写一个简单的 Ruby/PHP/Python/任何脚本来遍历 Excel 电子表格(或 .csv 文件)然后执行查询等,但我认为可能有Excel 本身的快捷方式。

最佳答案

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As String

Set cn = New ADODB.Connection
cn.ConnectionString = 'Get one from http://www.connectionstrings.com/oracle
'eg. "Driver={Oracle in OraHome92};Dbq=tns;Uid=uid;Pwd=pwd;"
cn.Open

sql = Your SQL

Set rs = cn.Execute(sql)

for loop or something to paste records

rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing

如果您正确地格式化电子表格,您可以将 rs 分配给一个变体,然后将该变体分配给一个范围,而不是循环遍历它。

编辑

使用当前的 SQL,您需要遍历每个单元格并查询数据库,然后将结果保存到 A3:A5。 编辑 2,类似的东西:

Private Function GetRow(user As String) As Variant
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As String
Dim v As Variant

Set cn = New ADODB.Connection
cn.ConnectionString = "Driver={Oracle in OraHome92};Dbq=tns;Uid=uid;Pwd=pwd;"
cn.Open

sql = "SELECT i.id, i.forename, i.surname FROM individual i WHERE UPPER(REPLACE('" & user & "', ' ', '')) = UPPER(REPLACE(i.surname|| i.forename, ' ', '')) AND NVL(i.ind_efface, 'N') = 'N'"

Set rs = cn.Execute(sql)

v = rs.GetRows()
GetRow = v

rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End Function

Sub a()
Dim user As String
For i = 2 To x
user = ActiveSheet.Cells(i, 1).Value

GetRow (user)
ActiveSheet.Cells(i, 2).Value = GetRow(0)
ActiveSheet.Cells(i, 3).Value = GetRow(1)
ActiveSheet.Cells(i, 4).Value = GetRow(2)

Next

End Sub

请注意,我使用了您想要的不同单元格,并且 GetRow 是二维的而不是一维的,但是我很难在无法访问实际电子表格/数据库的情况下编写它

关于sql - 在单元格上执行 Oracle 查询的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2956559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com