
存储过程中的字符串拼接问题
ALTERproc[dbo].[fun_query_pm]@ii_pm_namechar(20)asdeclare@wherechar(20);set@where='mi...
ALTER proc [dbo].[fun_query_pm]
@ii_pm_name char(20)
as
declare @where char(20);
set @where = 'misaka';
set @where= @where + @ii_pm_name
print @where;
输出where是misaka,就是说后面的@ii_pm_name根本没拼上
将 set @where= @where + @ii_pm_name 换成 set @where= @where + '123'
依然拼不上,求解
额 第六行少复制了一个分号,请各位忽略它,不是分号的原因 展开
@ii_pm_name char(20)
as
declare @where char(20);
set @where = 'misaka';
set @where= @where + @ii_pm_name
print @where;
输出where是misaka,就是说后面的@ii_pm_name根本没拼上
将 set @where= @where + @ii_pm_name 换成 set @where= @where + '123'
依然拼不上,求解
额 第六行少复制了一个分号,请各位忽略它,不是分号的原因 展开
展开全部
alter proc [dbo].[fun_query_pm]
@ii_pm_name varchar(20)
as
begin
declare @where varchar(20)
begin
set @where = 'missaka'
set @where = @where + @ii_pm_name
print @where
print @ii_pm_name
end
end
exec p_test '10011'
你把char换成varchar就可以显示了,这主要是char是固定长度,当set @where='misaka'时,
实际上@where中的字节段已经填满,后面空的被空格字符填满,所以当你再进行连接的时候就没位置连了,
当然不能连接了。用varchar就不会了
@ii_pm_name varchar(20)
as
begin
declare @where varchar(20)
begin
set @where = 'missaka'
set @where = @where + @ii_pm_name
print @where
print @ii_pm_name
end
end
exec p_test '10011'
你把char换成varchar就可以显示了,这主要是char是固定长度,当set @where='misaka'时,
实际上@where中的字节段已经填满,后面空的被空格字符填满,所以当你再进行连接的时候就没位置连了,
当然不能连接了。用varchar就不会了
展开全部
你是不是执行的时候没带参数?这样写试试:
ALTER proc [dbo].[fun_query_pm]
@ii_pm_name char(20)
as
BEGIN
declare @where char(20)
set @where = 'misaka'
set @where= @where + @ii_pm_name
print @where
END
执行:EXEC [dbo].[fun_query_pm] 'abcde'
看输出结果是不是misakaabcde
ALTER proc [dbo].[fun_query_pm]
@ii_pm_name char(20)
as
BEGIN
declare @where char(20)
set @where = 'misaka'
set @where= @where + @ii_pm_name
print @where
END
执行:EXEC [dbo].[fun_query_pm] 'abcde'
看输出结果是不是misakaabcde
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
set @where= @where || @ii_pm_name
这个可以不?
这个可以不?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接打印ii_pm_name
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询