WEB开发网
开发学院数据库MSSQL Server 关于 T-SQL 的几点小九九 阅读

关于 T-SQL 的几点小九九

 2009-06-08 10:31:48 来源:WEB开发网   
核心提示: 上面的示例是我实际工作中编写的存储过程,无论您是使用 SELECT TOP 也好,关于 T-SQL 的几点小九九(2),还是使用 SET ROWCOUNT也罢,这些都不是问题,为了能简单直白的说明问题,并且能顺利的在真实的数据库环境中运行该 SQL 语句,关键问题是您是否了解过他们都不属于

上面的示例是我实际工作中编写的存储过程,无论您是使用 SELECT TOP 也好,还是使用 SET ROWCOUNT也罢,这些都不是问题,关键问题是您是否了解过他们都不属于 ANSI SQL 标准,而是 T-SQL 特有的。

如何实现上面存储过程中关键部分的 ANSI SQL 的实现方法,为了能简单直白的说明问题,并且能顺利的在真实的数据库环境中运行该 SQL 语句,我只是抽象出上面的存储过程中部分 SQL 语句来说明问题。

-- ANSI SQL 方法
USE OrderForm
IF EXISTS (SELECT [name] FROM sysobjects
      WHERE [name] = 'proc_GetNewsSourceOfID' AND type = 'P')
DROP PROCEDURE proc_GetNewsSourceOfID
GO
CREATE PROCEDURE [dbo].[proc_GetNewsSourceOfID]
(
    @Count  int,  -- 用于指定返回记录的行数
    @newClsCode varchar(50) -- 用于指定新闻分类编号
)
AS
BEGIN
SELECT a.IT_ID
    FROM reglogin.dbo.InfoTable AS a
      WHERE ( SELECT COUNT(b.IT_ID)
                FROM reglogin.dbo.InfoTable AS b
                  WHERE b.IT_ID > a.IT_ID
                   AND b.newClsCode = '102005'
                    AND b.isMake > 0
                   AND b.isDel = 0
                   AND b.isCheck = 1 ) < @Count
      AND a.newClsCode LIKE @newClsCode + '%'
      AND a.isMake > 0
      AND a.isDel = 0
      AND a.isCheck = 1
ORDER BY a.IT_ID DESC
END

-- 测试存储过程
EXEC OrderForm.dbo.proc_GetNewsSourceOfID 5, '102005'

上一页  1 2 3 4 5 6 7  下一页

Tags:关于 SQL 小九九

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接