【问题标题】:Is there a way to dynamically control a table hint without using a dynamic sql query有没有办法在不使用动态 sql 查询的情况下动态控制表提示
【发布时间】:2015-08-09 23:28:35
【问题描述】:

例如:

CREATE PROCEDURE [dbo].[procGetTable]
    (
      @SetUPDLOCK BIT,
      @RecordId BigInt
    ) 
AS

SELECT * 
FROM MYTABLE WITH (CASE WHEN @SetUPDLOCK = 1 THEN 'UPDLOCK' ELSE '' END)
WHERE MYTABLE.RecordId = @RecordId

/*我知道以上内容仅在概念上不起作用*/

【问题讨论】:

    标签: sql-server dynamic hints


    【解决方案1】:
    CREATE PROCEDURE [dbo].[procGetTable]
          @SetUPDLOCK BIT,
          @RecordId BigInt
    AS
    BEGIN
       SET NOCOUNT ON; 
    
        IF (@SetUPDLOCK = 1 )
          BEGIN
                SELECT * 
                FROM MYTABLE WITH (UPDLOCK)
                WHERE MYTABLE.RecordId = @RecordId
           END
        ELSE 
          BEGIN
                SELECT * 
                FROM MYTABLE
                WHERE MYTABLE.RecordId = @RecordId
           END
    END
    

    【讨论】:

    • 为不重复查询语句的任何方式干杯
    • 只有其他方式是动态sql,这里你不是复制查询,只有一个查询会被执行。
    • 好吧,我会把这个作为正确答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    • 2015-03-05
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    相关资源
    最近更新 更多