回答

收藏

如何从存储过程返回字符串值

技术问答 技术问答 265 人阅读 | 0 人回复 | 2023-09-14

Alter procedure S_Comp(@str1 varchar(20),@r varchar(100) out)) V. H: y/ N9 q  y6 W: Z. \4 s
as/ Z$ `# n  G- i# B+ J* C4 a# L  C
declare  @str2 varchar(100)
/ H$ ?1 e4 j2 Z( |7 Q  H5 L7 fset @str2  ='welcome to sql server. Sql server is a product of Microsoft'" H; M) Q! d- N) S& l1 z! E( k  H
if(PATINDEX('%'+@str1 +'%',@str2)>0)
  m9 P+ S# v5 o! Z* o$ T    return @str1+'present in the string'
# h9 c: N7 r) qelse : e$ X% W5 c5 ~" A- _& d
    return @str1+'not present'" _1 s+ L) U4 ~  K) S
我正在执行上面的存储过程。我收到以下错误:6 S! w- h7 j! s+ o; t6 h

- [# Y' s* A4 f* s1 J% T  o消息245,级别16,状态1,过程S_Comp,第8行在将varchar值“存在的Amruthanot”转换为数据类型int时,转换失败。0 w0 m' i2 K" P2 e$ K! Q: F0 y& H8 [+ F
$ k  R. q2 m5 p0 ?- g) u4 y
请帮我解决这个问题
2 h; O7 Y) o1 `/ g. g1 E+ L' ^               
- q) D9 j0 J) f( n1 l! y- C解决方案:+ r$ Q3 M. `7 e% i! M
               
3 v) x+ h. M, X* W4 c* q
0 s/ y4 e5 N! @- L5 ^
4 H3 ~" p4 `) {# q0 V) z5 J% ^                您将结果放在RETURN值中,而不是传递的@r值中。# Y# ^3 g. }4 C; j% e1 a8 v) A
从MSDN4 {5 e9 z9 P4 G: V; ?4 s

! `8 G: E. X; _(返回) 是 返回 的整数值。存储过程可以将整数值返回到调用过程或应用程序。
$ P# [$ }9 i" x4 T
1 Q! }) r* n: y. P+ b更改您的程序。4 d; w" B) @# `5 F" O
ALTER procedure S_Comp(@str1 varchar(20),@r varchar(100) out) as4 C8 [3 r+ D, c) r1 ?( Q
    declare @str2 varchar(100)
8 ~. ^: T4 J) M    set @str2 ='welcome to sql server. Sql server is a product of Microsoft' ; I) R9 }- }2 r/ z% a: ^
    if(PATINDEX('%'+@str1 +'%',@str2)>0) & z( v5 g( Z8 I9 a
        SELECT @r =  @str1+' present in the string'
' {$ J( h( ^' [+ L& X4 r2 w$ B    else
; l! Y: ^. V" H) R* ?        SELECT @r = @str1+' not present'
7 x1 t. x+ ~2 s6 |) W, _调用程序
9 @$ }8 l) I2 k+ H  DECLARE @r VARCHAR(100)
( B4 {) G  x9 q  EXEC S_Comp 'Test', @r OUTPUT
- F' F6 ?4 w3 b- S( J/ \! u  SELECT @r
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则