回答

收藏

SQL:OPENROWSET,无法为请求字符串生成?

技术问答 技术问答 80 人阅读 | 0 人回复 | 2023-09-13

我想构造与OPENROWSET方法一起使用的查询。
. }, \* T* z8 @) \例子:6 o6 q- k% _- s# ]8 u4 e- G
SELECT *' \/ a4 r3 s$ W* s
FROM6 x  q6 ]& {. z
OPENROWSET
1 @& B+ r9 K9 P+ e/ f( e& |('SQLOLEDB', 'srv'; 'login'; 'mdp';# S0 O# K+ ?) Y& v
'SELECT *
$ ~8 E5 M$ W5 @8 y* m$ w3 p( A1 b FROM Case/ \  }+ ?; Y1 w- @% D
WHERE ID = ' + @caseID)9 g' k( W% y% d( A+ P
但是当我这样做时,我得到了错误: ’+’附近的语法不正确
5 T/ R  S7 I+ a" `( Z如何建立查询?谢
7 w" O9 i4 y5 \6 B4 ?: i               
' a% K: C% b8 F. X0 F1 r解决方案:
$ a8 O1 j  s  Y% _. W                : J5 A% @+ e; U! W( w
3 B- t# E" }( G8 P0 Y: Y

9 [* O- q; k, T3 z                尽管in中的查询OPENROWSET被指定为字符串,并且通过这种方式看起来非常像动态查询,但是语法不允许将其以同样的方式构造成一部分。9 n. k) Z8 P) q1 Y6 K6 j
恐怕,您将必须构建一个动态查询,该查询将调用OPENROWSET,如下所示:
5 ?4 P0 n, X6 t0 uSET @sql = '
8 k7 Y- U& W; d& a8 f: a+ ~- W  SELECT */ ]2 Q) E$ [3 Z. G) @5 f; w
  FROM6 k$ Q$ W* l( |. b0 v. |
  OPENROWSET5 K; B: M  [8 e
  (''SQLOLEDB'', ''srv''; ''login''; ''mdp'';
9 ^3 H0 e* L; T1 y8 X   ''SELECT *% l  @( k/ i$ D. N
     FROM Case
+ n- l0 b/ ]3 e6 Q$ d3 \2 N, t2 ]     WHERE ID = ' + @caseID + ''')';
, a* w' x5 c5 Q, KEXEC(@sql);
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则