CREATE PROCEDURE search1(@keywords int) AS
DECLARE @str varchar(500)
if IsNull(@keywords,'')<>''
begin
set @str='select name ,mediaid,times,pubid,smallpic from picture where pubid='+Rtrim(@keywords)
EXEC(@str)
end
GO
DECLARE @str varchar(500)
if IsNull(@keywords,'')<>''
begin
set @str='select name ,mediaid,times,pubid,smallpic from picture where pubid='+Rtrim(@keywords)
EXEC(@str)
end
GO
CREATE PROCEDURE search1(@keywords int) AS
DECLARE @str varchar(500)
if @keywords<>''
begin
set @str='select name ,mediaid,times,pubid,smallpic from picture where pubid='+cast(@keywords as varchar)
select @str sql
return
end
GO
2楼用了RTRIM进行了隐式转换.DECLARE @i INT
SELECT ISNULL(RTRIM(@i),'a')
对比
DECLARE @i INT
SELECT ISNULL(@i,'a')
Rtrim函数是去掉字符串的右边空格,你的类型是整型不是字符型,所以不要用RTRIM函数,应是把变量转变成字符型.
-----------------------------------------------------------------
理解有問題。可以利用Rtrim來對數字型進行類型轉換。
改為
if IsNull(@keywords,'')<>''可以控制兩種情況,。相當於if @keywords<>'' And @keywords Is Not Null
另外,“select @str sql”這句也是有問題的。