我只是在写一个存储过程,而且我一度陷入困境。
基本上我的存储过程如下所示:
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
,并从数据库中删除记录。
所以基本上我想用应用程序编号作为模板形成删除语句,并在运行时删除记录。
请帮忙!
答案 0 :(得分:0)
我找到了db清除的解决方案。为了处理运行时GUID情况,我从存储过程发布了存储过程。
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语句并发布存储过程。在运行时,它将点击我发布的存储过程,我将首先在临时表中找到所有guid,然后开始删除。
无论如何都要感谢您的所有输入。