Home  >  Article  >  Database  >  佩特来项目经验小集合(2)___组合查询存储过程,报错"va

佩特来项目经验小集合(2)___组合查询存储过程,报错"va

WBOY
WBOYOriginal
2016-06-07 15:59:071401browse

今天写一个组合查询的存储过程遇到这样一个问题: 在将 varchar 'SELECT * FROM View_DLS_WXJD_Customer WHERE 1=1 and JBID ='' 转换成数据类型 int 时失败。错误详情如图所示: 经百度:字符串变量和整型变量连接不能用连接。于是我采用 cast() 函数将DLSJB

今天写一个组合查询的存储过程遇到这样一个问题:在将 varchar 值 'SELECT * FROM View_DLS_WXJD_Customer WHERE 1=1 and JBID ='' 转换成数据类型 int 时失败。错误详情如图所示: \ 经百度:字符串变量和整型变量连接不能用+连接。于是我采用cast()函数将DLSJB这个整型变量转换成字符串,这样问题就解决了。正确代码如下所示:
ALTER PROCEDURE [dbo].[Proc_SH_WXJDList]
	@DH varchar(50),       --单号
	@DLSJB int,    --代理商级别ID
	@DLSName varchar(100)   --代理商姓名
AS
BEGIN
Declare @sqlStr varchar(800)  --存储sql语句
	
	Set @sqlStr = 'SELECT * FROM View_DLS_WXJD_Customer WHERE 1=1'	--合成sql语句,不输入条件则选择全部
	
	 if(@DH!='')									--判断是写单号
		set @sqlStr = @sqlStr + ' and DH like ''%' + @DH + '%''' 
	if(@DLSJB!= -1 )	                    --判断是否选择代理商级别
		set @sqlStr = @sqlStr + ' and JBID ='+''''+cast(@DLSJB as varchar(5))+''''
	if(@DLSName!='')										--判断是否选择代理商名
		set @sqlStr = @sqlStr + ' and DLSName like ''%' + @DLSName + '%''' 	
	EXEC (@sqlStr + 'ORDER BY DH DESC')			
END

cast()是一个转换函数,跟我们在asp.net中使用的Convert函数一样,都是一种数据类型转换到另一种数据类型。这篇文章恰恰是使用cast()函数使整型变量强制转换成字符串型,这样字符串型之间就可以使用+进行连接了。
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn