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

解决方案 »

  1.   

    --try
    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.   

    谢谢朋友!ok了”Rtrim“是什么意思呀!我马上给分
      

  3.   

    Rtrim函数是去掉字符串的右边空格,你的类型是整型不是字符型,所以不要用RTRIM函数,应是把变量转变成字符型.
      

  4.   

    为什么不能用RTRIM?
    2楼用了RTRIM进行了隐式转换.DECLARE @i INT
    SELECT ISNULL(RTRIM(@i),'a')
    对比
    DECLARE @i INT
    SELECT ISNULL(@i,'a')
      

  5.   

    wgsasd311(自强不息) ( ) 信誉:100  2006-06-15 10:00:00  得分: 0  
     
     
       Rtrim函数是去掉字符串的右边空格,你的类型是整型不是字符型,所以不要用RTRIM函数,应是把变量转变成字符型.
      
     
    -----------------------------------------------------------------
    理解有問題。可以利用Rtrim來對數字型進行類型轉換。
      

  6.   

    if  @keywords<>''
    改為
    if  IsNull(@keywords,'')<>''可以控制兩種情況,。相當於if  @keywords<>'' And @keywords Is Not Null
    另外,“select @str sql”這句也是有問題的。
      

  7.   

    不直接拿变量或字段与''或0比较是个好习惯.推荐在语句中合适的使用ISNULL会避免很多意想不到的错误.