重置参数值为缺省值

有一项目表,即为参数表,其中许多字段均设有缺省值。

现在想用户重置时,这些字段的值均Reset为字段预设的缺省值。

如:

我们可以从系统表INFORMATION_SCHEMA.COLUMNS来获取字段以及其一个属性。

 SELECT 
            [COLUMN_NAME], REPLACE(REPLACE([COLUMN_DEFAULT],'((',''),'))','') AS [COLUMN_DEFAULT]
        FROM
            INFORMATION_SCHEMA.COLUMNS
        WHERE
          [TABLE_SCHEMA] = 'dbo' 
          AND [TABLE_NAME] = 'QueryParameter'
Source Code


此时,我们想对这结果,呈现为另一种表现:

这样的的结果,就如同直接SELECT 表的结果一样:

表现形式一样,在前端绑定数据就没有什么问题了。

上面一系列操作,用户需要点击Reset之后,只是把缺省值绑定至相关的字段域中,还需要再进一步更新才能把数据表的数据改为缺省值。

 还不如一步到位,用户操作重置之后,直接在数据库进行更新。

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[usp_QueryParameter_Update_ResetfaultValue]
(
    @ParmKey [tinyint],
    @UpdatedBy NVARCHAR(30)
)
AS
BEGIN
    ;WITH q  AS 
    (    
         SELECT 
            [COLUMN_NAME], REPLACE(REPLACE([COLUMN_DEFAULT],'((',''),'))','') AS [COLUMN_DEFAULT]
        FROM
            INFORMATION_SCHEMA.COLUMNS
        WHERE
          [TABLE_SCHEMA] = 'dbo' 
          AND [TABLE_NAME] = 'QueryParameter'
    )

    UPDATE [dbo].[QueryParameter] 
    SET [DataRecord_Option] = q1.[COLUMN_DEFAULT],
    [DataRecords] = q2.[COLUMN_DEFAULT],
    [DropDown_Option] = q3.[COLUMN_DEFAULT],
    [DropDowns] = q4.[COLUMN_DEFAULT],
    [NON_Option] = q5.[COLUMN_DEFAULT],
    [NONs] = q6.[COLUMN_DEFAULT],
    [Search_Option] = q7.[COLUMN_DEFAULT],
    [Searchs] = q8.[COLUMN_DEFAULT],
    [DefaultValue] = q9.[COLUMN_DEFAULT],
    [UpdatedBy] = @UpdatedBy,
    [UpdatedDate] = CURRENT_TIMESTAMP
    FROM q AS q1,q AS q2,q AS q3,q AS q4,q AS q5,q AS q6,q AS q7,q AS q8,q AS q9
    WHERE q1.[COLUMN_NAME] = N'DataRecord_Option' 
        AND q2.[COLUMN_NAME] = N'DataRecords' 
        AND q3.[COLUMN_NAME] = N'DropDown_Option' 
        AND q4.[COLUMN_NAME] = N'DropDowns' 
        AND q5.[COLUMN_NAME] = N'NON_Option'  
        AND q6.[COLUMN_NAME] = N'NONs' 
        AND q7.[COLUMN_NAME] = N'Search_Option' 
        AND q8.[COLUMN_NAME] = N'Searchs' 
        AND q9.[COLUMN_NAME] = N'DefaultValue'
    AND [ParmKey] = @ParmKey
END
Source Code
原文地址:https://www.cnblogs.com/insus/p/12857114.html