婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 動態給表添加刪除字段并同時修改它的插入更新存儲過程

動態給表添加刪除字段并同時修改它的插入更新存儲過程

熱門標簽:銀川高頻外呼回撥系統多少錢 數字匠心電銷機器人 成都電話外呼系統一般多少錢 al智能電話機器人 如何做地圖標注圖鋪 陜西電銷外呼系統好用嗎 蘭州語音外呼系統運營商 最新人工智能電銷機器人 沒聽見電話機器人幫你接
有一個表,用戶需要在后臺操作它,希望能對它動態進行添加刪除字段。這個功能也許沒有問題,但是它原有插入與更新的兩個存儲過程,也需要一起修改。因此Insus.NET實現了它,因此此文會讓你了解到怎樣動態為一個表添加刪除字段以及動態修改它的存儲過程

首先需要建一個表[A],這個表只有兩個字段,一個是[ID]自動增長,另一個是表[B]的字段名,存儲的每一筆記錄,即是用戶需要操作的表[B]的字段。這個表[A]需要建添加,更新,以及刪除的存儲過程,方便用戶在后臺方便操作,還有重點部分,需要寫觸發器。如有記錄對表[A]進行添加,更新或是刪除時,它會觸發去作表[B]相應操作,還要去修改表[B]的存儲過程。

動態修改表[B]的存儲過程:
復制代碼 代碼如下:

CREATE PROCEDURE [dbo].[usp_B_DymanicallyAlterStoreProcedure]
AS
DECLARE @VariableList NVARCHAR(MAX) = ''
DECLARE @FieldList NVARCHAR(MAX) = ''
DECLARE @ValueList NVARCHAR(MAX) = ''
DECLARE @FieldValueList NVARCHAR(MAX) = ''

DECLARE @I INT = 1, @R INT = 0
SET @R = (SELECT MAX([Id]) FROM [dbo].[A])
WHILE (@I = @R)
BEGIN
DECLARE @fName NVARCHAR(100)
IF EXISTS(SELECT [Id] FROM [dbo].[A] WHERE [Id] = @I)
BEGIN
SELECT @fName = [FieldName] FROM [dbo].[A] WHERE [Id] = @I
SET @VariableList = @VariableList + ',@' + @fName +' DECIMAL(18,4)' --動態的字段數據類型都一樣
SET @FieldList = @FieldList + ',[' + @fName + ']'
SET @ValueList = @ValueList + ',@' + @fName
SET @FieldValueList = @FieldValueList + ',[' + @fName + '] = @' + @fName
END
SET @I = @I + 1
END

DECLARE @sql_I NVARCHAR(MAX),@sql_U NVARCHAR(MAX)
SET @sql_I = '
ALTER PROCEDURE [dbo].[usp_B_Insert]
(
@ItemCode NVARCHAR(50)
'+ @VariableList +'
)
AS
INSERT INTO [dbo].[B] ([ItemCode]'+ @FieldList +') VALUES (@ItemCode'+ @ValueList +')
'
EXECUTE sp_EXECUTESQL @sql_I;

SET @sql_U = '
ALTER PROCEDURE [dbo].[usp_B_Update]
(
@Id INT,
@ItemCode NVARCHAR(50)
'+ @VariableList +'
)
AS
UPDATE [dbo].[B] SET [ItemCode] = @ItemCode'+ @FieldValueList +' WHERE [Id] = @Id
'
EXECUTE sp_EXECUTESQL @sql_U;

表[A]的插入觸發器:
復制代碼 代碼如下:

CREATE TRIGGER [dbo].[tri_A_Insert] ON [dbo].[A]
FOR INSERT
AS
BEGIN
SET NOCOUNT ON
DECLARE @FieldName NVARCHAR(50)
SELECT @FieldName = [FieldName] FROM INSERTED

EXECUTE('IF NOT EXISTS(SELECT * FROM SYSCOLUMNS WHERE [id] = OBJECT_ID(''B'') AND [name] = '''+ @FieldName +''')
ALTER TABLE [B] ADD ['+ @FieldName +'] DECIMAL(18,4) NULL')

EXECUTE [dbo].[usp_B_DymanicallyAlterStoreProcedure];
END

表[A]刪除觸發器:
復制代碼 代碼如下:

CREATE TRIGGER [dbo].[tri_A_Delete] ON [dbo].[A]
FOR DELETE
AS
BEGIN
SET NOCOUNT ON
DECLARE @FieldName NVARCHAR(50)
SELECT @FieldName = [FieldName] FROM DELETED

EXECUTE('IF EXISTS(SELECT * FROM SYSCOLUMNS WHERE [id] = OBJECT_ID(''B'') AND [name] = '''+ @FieldName +''')
ALTER TABLE [B] DROP COLUMN ['+ @FieldName +']')

EXECUTE [dbo].[usp_B_DymanicallyAlterStoreProcedure];
END

標簽:鹽城 邢臺 宜春 本溪 通化 巴彥淖爾 朔州 遼源

巨人網絡通訊聲明:本文標題《動態給表添加刪除字段并同時修改它的插入更新存儲過程》,本文關鍵詞  動態,給,表,添加,刪除,字段,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《動態給表添加刪除字段并同時修改它的插入更新存儲過程》相關的同類信息!
  • 本頁收集關于動態給表添加刪除字段并同時修改它的插入更新存儲過程的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 怀仁县| 桃源县| 江陵县| 兴业县| 台中县| 新野县| 夏邑县| 磴口县| 平泉县| 施甸县| 洛川县| 沙雅县| 德州市| 惠水县| 中阳县| 宝鸡市| 舒城县| 郧西县| 乐平市| 虹口区| 蒲城县| 长白| 汾西县| 峨山| 百色市| 渭源县| 华池县| 武城县| 长乐市| 丹寨县| 威海市| 綦江县| 浦东新区| 晋宁县| 藁城市| 广丰县| 凤城市| 常州市| 宁蒗| 三江| 安化县|