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); |
|
|
|
|
|