★o★大家来看看/ 存储过程 /的问题★CREATE PROCEDURE proName
(
 @ShowNum int,
 @SortID int
)AS  DECLARE @SQL VARCHAR(100) 
  DECLARE @NUM INT
  SET @NUM = @ShowNum
  SET @SQL = 'SELECT TOP '+CAST(@NUM AS VARCHAR(20))+' * From News where SortID =@SortID or SortID IN (Select ID from NewsSort where ParentID = @SortID)  order by ID desc'EXEC(@SQL)
GO-------------
VS.net 2005 中使用 SqlDataSource绑定时报错信息:执行查询时出错。请检查命令的语法以及参数的类型和值(如果有)。确保他们正确。
必须声明变量 '@SortID'。
第1行:'ParentID'附近有语法错误。高手指点
---------------------
把后面where条件去掉时,这个存储过程是可以使用的。

解决方案 »

  1.   

    SET @SQL = 'SELECT TOP '+CAST(@NUM AS VARCHAR(20))+' * From News where SortID =' + CAST(@SortID AS VARCHAR(20)) + ' or SortID IN (Select ID from NewsSort where ParentID = ' + CAST(@SortID AS VARCHAR(20)) + ')  order by ID desc'
      

  2.   

    SET @SQL = 'SELECT TOP '+CAST(@NUM AS VARCHAR(20))+' * From News where SortID =@SortID or SortID IN (Select ID from NewsSort where ParentID = ’+  @SortID)+‘ order by ID desc'
      

  3.   


    SET @SQL = 'SELECT TOP '+CAST(@NUM AS VARCHAR(20))+' 
                       * From News where SortID = '+trim(@SortID) +'or SortID IN (Select ID from NewsSort where ParentID = ’+ trim(@SortID)+‘ order by ID desc'
      

  4.   

    'SELECT TOP '+CAST(@NUM AS VARCHAR(20))+'* From News where SortID = '+trim(@SortID) +'or SortID IN (Select ID from NewsSort where ParentID = '+ trim(@SortID)+' order by ID desc'
      

  5.   

    感谢楼上各位 问题在  @sql 的 定义字符长度不够上 '+@SortID+' 和 trim(@SortID) 是行不通的一楼方法原来也测试过 ,trim 改成 rtrim 或者ltrim 就可以了--------------------------再把问扩展一下 向大家请教以此存储过程为例如何在slq语句中 控制 字段(Title)中  显示字符的长度select Title from news 
      

  6.   

    也就是 通常我们用函数处理 截取字符串 的效果现在想直接在sql中解决之前有看过用这个存储过程该如何解决?请高手指点谢谢
      

  7.   

    方法是直接在sql语句中处理,能实现的效果是:假设我新闻的标题是 "报名即赠SCJP考试卷,数量有限★最新Linux工程师薪资统计!半年打造赴日软件工程师年薪25万"这么长,前台只显示20个字符(截取),鼠标放上去的时候显示全部标题。就是很常见的效果,
    需要在构照sql语句的时候实现这个效果。请高手指点。
      

  8.   

    To 楼上前台的会 看过有在SQL 语句直接写的 如果能在数据处理阶段那样做,后面写前台就会很方便没人回复么不然只好结贴了
      

  9.   

    看看這樣吧。Select 新闻, Left(新闻, 20) As New新闻 From 表開始顯示New新闻字段中的值,如果鼠標移上去,就顯示新闻這個字段的值。
      

  10.   

    testtest000() ( ) 信誉:100  2007-08-06 17:04:18  得分: 0  
     
     
       作成变量呢 用存储过程写 高手演示看看  
    ---------------
    樓主描述問題的時候總是惜墨如金,最好能清晰的說明你的要求。就說個存儲過程, 輸入參數是怎樣,輸出參數是怎樣,功能也沒有太多的描述。看看這個是不是你要的。另外,還是那句話,這個東西最好放在前台去控制實現。
    --建立存儲過程
    Create ProceDure SP_TEST(@新闻 Varchar(100), @New新闻 Varchar(20) Output)
    As
    Select @New新闻 = Left(@新闻, 20)
    GO
    --調用
    Declare @新闻 Varchar(100), @New新闻 Varchar(20)
    EXEC SP_TEST 'dasdsadsaaadsadsa', @New新闻 Output
    Select @New新闻