sql server - SQL query error from case when statement with subquery -
my stored procedure:
create procedure test_template @template_type int=null begin select template_id, template_name bdc_templates template_can_be_applied_to in ( case when @template_type=0 or @template_type=1 @template_type -- 0:email & letter , 1: email when @template_type=2 (select data udf_dp_split_string('0,2', ',')) -- 2: letter else template_can_be_applied_to end) end
above stored procedure returns following error:
msg 512, level 16, state 1, procedure test_template, line 6
subquery returned more 1 value. not permitted when subquery follows =, !=, <, <= , >, >= or when subquery used expression.
when executed following inputs:
exec test_template 2
i using in
clause in where
condition because when @template_type
'2', template_can_be_applied_to column
can 1 of values 0 , 2.
first of can't use int
variable in
statement, need use table variable select
statement.
update can’t use scalar variable in in
statement record set. if variable has single data value (as think trying do) ok. in case solution provided @ah_hau use equality sign “template_can_be_applied_to = @template_type
” better.
secondly can't have multiple records returned in case
statement. in order achieve trying need use conditional or
, and
statements such below:
where ( (@template_type=0 or @template_type=1) , template_can_be_applied_to in (select col [your table variable]) ) or ( @template_type=2 , template_can_be_applied_to in (select data udf_dp_split_string('0,2', ',')) )
Comments
Post a Comment