回答

收藏

如何在C#中显示SQL``RINT''命令的输出?

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

我有一个始终返回“ PRINT”命令的SQL过程,我想提取此“ PRINT”命令的输出,即C#中的过程,我该怎么做?这是程序( k+ h$ u' g6 C3 {" T. p
ALTER PROC ResultsPoll. i& R. Z3 F7 E, B. Z9 s
@pollid INT
1 d! v! }! v0 i/ v% K4 [3 TAS
$ q) _7 ~- D( m6 Z/ t3 @DECLARE @count1 INT
* d9 {: \! Y. a( {. o* e# j2 ~: `DECLARE @count2 INT
, T& m4 m- g# x, NDECLARE @count3 INT
1 ~+ x6 r7 _, \0 f# q# Y/ iDECLARE @count4 INT
$ O# z' I+ m' XDECLARE @count5 INT 1 r: K: }0 }7 \- }( ^
DECLARE @test VARCHAR(MAX)
% ?4 F7 g  Z& E9 k% B) WDECLARE @value VARCHAR(MAX)
/ j, Y6 e7 ~3 E$ y* P6 }3 W% vSELECT @count1 = COUNT(mem_id) FROM Students_answer_Polls INNER JOIN Polls ON Polls.poll_id = Students_answer_Polls.poll_id5 w) u4 r* b4 _9 M2 ?
WHERE Students_answer_Polls.poll_id = @pollid AND Students_answer_Polls.answer = Polls.a1: b7 n! t7 o# R; O# U6 T
SELECT @count2 = COUNT(mem_id) FROM Students_answer_Polls INNER JOIN Polls ON Polls.poll_id = Students_answer_Polls.poll_id. P  r# u) Y/ M
WHERE Students_answer_Polls.poll_id = @pollid AND Students_answer_Polls.answer = Polls.a23 ]% {: K2 T: {( }
SELECT @count3 = COUNT(mem_id) FROM Students_answer_Polls INNER JOIN Polls ON Polls.poll_id = Students_answer_Polls.poll_id
! H2 A- U6 v2 n1 Y, J8 EWHERE Students_answer_Polls.poll_id = @pollid AND Students_answer_Polls.answer = Polls.a3
) @- _2 k1 e& L  v( m/ HSELECT @count4 = COUNT(mem_id) FROM Students_answer_Polls INNER JOIN Polls ON Polls.poll_id = Students_answer_Polls.poll_id% w+ U7 r* T9 y
WHERE Students_answer_Polls.poll_id = @pollid AND Students_answer_Polls.answer = Polls.a4* ]4 t" v# A/ H$ P% \* F
SELECT @count5 = COUNT(mem_id) FROM Students_answer_Polls INNER JOIN Polls ON Polls.poll_id = Students_answer_Polls.poll_id
+ @' R' s5 m$ |* aWHERE Students_answer_Polls.poll_id = @pollid AND Students_answer_Polls.answer = Polls.a5" R# Z3 s  G7 n( ~0 `# w
SELECT @test=Polls.a1 FROM Polls WHERE poll_id = @pollid! S& I# s0 z% q) T3 M" T) C
IF(@test IS NOT NULL)0 [1 @! c$ _: V8 _1 c4 f' R
BEGIN5 U# ]1 q3 Z  E; o6 x
PRINT ('Number of students who chose '+@test+' is:'+' '+CAST (@count1 AS VARCHAR(MAX)))
/ B9 Y# I) k, pEND
# s3 ~3 v- |. cSELECT @test=Polls.a2 FROM Polls WHERE poll_id = @pollid
- B" V: R; U# l) r( D7 r8 {# {IF(@test IS NOT NULL)3 ?% ~1 Q8 q1 {/ k9 R$ O
BEGIN3 J2 @1 y3 R% U+ {1 u' D
PRINT ('Number of students who chose '+@test+' is:'+' '+CAST (@count2 AS VARCHAR(MAX)))
+ t5 ?% g! V. I! K; S) V, _END
# W( U( w5 T( B4 p7 ?SELECT @test=Polls.a3 FROM Polls WHERE poll_id = @pollid* M, K+ O; u' t; p; h# }
IF(@test IS NOT NULL)) i1 G6 ~+ y3 L- c6 O% q. [
BEGIN
' o9 T3 V- y/ _PRINT ('Number of students who chose '+@test+' is:'+' '+CAST (@count3 AS VARCHAR(MAX)))% v8 ~' I  f+ J! Q
END
& ~# V1 y( {9 T: ISELECT @test=Polls.a4 FROM Polls WHERE poll_id = @pollid
" N: c+ c  P/ u$ \IF(@test IS NOT NULL)
1 d! M5 \/ {" i7 NBEGIN1 `# s; T2 w3 T# F3 r  f7 D9 j
PRINT ('Number of students who chose '+@test+' is:'+' '+CAST (@count4 AS VARCHAR(MAX)))
: Z4 V. p. K6 j6 eEND4 B  k! M9 S9 f+ W# f( e% d& ?
SELECT @test=Polls.a5 FROM Polls WHERE poll_id = @pollid
* r4 u4 q1 a  X  X) N; Y" r' B& ~IF(@test IS NOT NULL)
$ q3 c  _, g) R( y1 h" n. nBEGIN
  o, c& {/ }+ D% E6 s+ T1 cPRINT ('Number of students who chose '+@test+' is:'+' '+CAST (@count5 AS VARCHAR(MAX)))6 o; g, t4 e5 T3 w" S2 @
END" z, v' @2 v2 J
               
' O6 A) P; l% f解决方案:
+ d, L2 i) q( G                0 l8 j0 |' y; Q0 r; e

' ~6 X9 p+ U, P0 K
/ U  z0 U* `+ c                您需要订阅SqlConnection.InfoMessage活动。
( i' E7 x* f. J* B: n. |+ w) WMSDN在这里有一些示例代码。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则