作者mardin (mardin)
看板Database
标题[SQL ] 利用excel vba执行复杂SQL不能超过255
时间Wed Oct 28 12:05:31 2020
各位先进大家好,
我利用excel vba执行一个复杂的SQL, 因为SQL指令的长度太长超过255
在执行VBA时, 这个SQL字串就只留前面的255bytes的指令,
造成SQL语法不完整, 出问题,
我已GOOGLE好久, 都找不到答案, 快疯掉了, 请各位先进指导一下, 感谢。
excel 程式片段大概如下: (问在倒数第2行 SQL字串)
VVVVVVVVVVVVVVVVVVVVVVVVVVVV
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.ConnectionString = "Driver={MySQL ODBC 8.0 Unicode Driver};" & _
"SERVER = localhost; " & _
"PORT = 3306" & _
"DATABASE = dbdb;" & _
"UID = root; PASSWORD = 123; OPTION=3"
conn.Open conn.ConnectionString
conn.Execute "use dbdb"
strsql = "SELECT ......." 'SQL长度超过 255, 会被截掉
rs.Open strsql, conn
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.137.45.146 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1603857933.A.B8A.html
1F:推 Tjpmars: 在mysql内写好sp或是view去呼叫如何? 10/28 13:36
非常感谢指点,用sp可以解决长度不会超过255,但如何抓sp产生的结果,还在试当中..
2F:→ Iories: 长度限制应是Excel储存格的限制 strsql = 是否有储存格? 10/29 19:54
3F:→ Iories: 若有,把固定文字都写在VBA里,会变动的才写在储存格试试 10/29 19:54
strsql 没有储存格, 我都用变数
4F:推 unilaico: 好像用复制贴上有时候会出现 可以用储存格=A1&B1...把 10/30 03:40
5F:→ unilaico: 太长的语法连在一起 10/30 03:40
这个用试2种方法, 都还是会被截掉.
方法1: strsql = "select ......" & 变数1 & _
"................" & 变数2 & _
"........."
方法2: strsql = "select ......" & 变数1
strsql = strsql & "................" & 变数2
strsql = strsql & "........."
※ 编辑: mardin (118.150.201.220 台湾), 11/01/2020 19:14:46
6F:推 unfinish: 大胆猜一下 原po应该是设中断点再从区域变数视窗直接抓 11/10 13:46
7F:→ unfinish: 变数内容里的字串出来吧 後面加一行Range("A1")=strsql 11/10 13:46
8F:→ unfinish: 用储存格看 保证查询字串一个字不少 我觉得原po查询字 11/10 13:46
9F:→ unfinish: 串应该有语法错误 11/10 13:46