我只是写了一个存储过程,我在某个时候被严重陷入困境。
基本上我的存储过程看起来像这样:
CREATE PROCEDURE [dbo].[DELETEGUIDTESTNEW1]
(@IpApplicationNumber NVARCHAR(50) = NULL)
AS
BEGIN
DECLARE @ApplicationNumber NVARCHAR(20)
SET @ApplicationNumber = (SELECT APPLICATIONNUMBER
FROM CUSTOMERROLE
WHERE CUSTOMERNUMBER = @IpCustomerNumber
AND CUSTOMERVERSIONNUMBER = @IpCustomerVersion)
-- In between I am doing business operation--------------------
INSERT INTO dbo.DeleteTest1(Statements)
VALUES ('Delete from '+@GuidTableName+' where ApplicationNumber =' + @ApplicationNumber)
我将在运行时获得我的参数,但是实际问题是我要在获取应用程序编号之前形成删除语句,并且我希望以这样的方式形成删除语句从表格替换为实际申请号,将@ApplicationNumber
替换为数据库。
基本上,我想将删除语句与应用程序编号作为模板,并在运行时删除记录。
请帮助!
我找到了DB净化的解决方案。为了处理运行时指导情况,我从存储过程中发布了存储过程。
SELECT @GuidPrimaryTableSpace = @GuidPrimaryTableSpace + DeleteGuidStatement + ';'+ CHAR(13) + CHAR(10)
FROM ##Purge_GuidForeignKeyTablePurgeStatements
SELECT @GuidForeignKeyTableSpace = @GuidForeignKeyTableSpace +'Insert Into @AddressRecordsToPurge (GuidValue, GuidColumn) ( '+ SelectGuidStatement +');'+ CHAR(13) + CHAR(10)
FROM ##Purge_GuidPrimaryTablePurgeStatements
SELECT @DeleteGuidStatementSpace = @DeleteGuidStatementSpace + DeleteGuidValueStatement + ';'+ CHAR(13) + CHAR(10)
FROM ##Purge_GuidTableNames
SET @createProcedureCmd = 'CREATE PROCEDURE MyProc' + ' (@ApplicationNum nvarchar(50),@CustomerNumber nvarchar(50),@CustomerVersionNumber nvarchar(50)) AS ' + ' BEGIN '+
' DECLARE @ApplicationNumber nvarchar(50); SET @ApplicationNumber = @ApplicationNum;
DECLARE @AddressRecordsToPurge TABLE
(
RowID INT NOT NULL PRIMARY KEY IDENTITY(1,1),
GUIDValue Nvarchar(max),
GUIDColumn Nvarchar(max)
)'+ CHAR(13) + CHAR(10) + @GuidForeignKeyTableSpace + @GuidPrimaryTableSpace + @DeleteGuidStatementSpace +' END'
EXEC(@createProcedureCmd)
因此,在这里,我首先要组成所有Select语句并发布存储过程。在运行时,它将达到我已发布的存储过程,我将首先在temp表中找到所有GUID,然后启动我的删除。
无论如何,谢谢您的所有输入。