我只是在写一个存储过程,在某一点上我被卡住了。
基本上,我的存储过程如下所示:
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)我将在运行时获得我的参数,但实际问题是,我想在获得应用程序编号之前形成我的delete语句,我想以这样的方式形成我的delete语句,当我将获得我的应用程序编号时,我将从表中获取所有的delete语句,并用实际的应用程序编号替换@ApplicationNumber,然后从数据库中删除记录。
因此,基本上我希望以应用程序编号作为模板来形成delete语句,并在运行时删除记录。
请帮帮我!
发布于 2017-11-26 22:19:22
我已经找到了清除数据库的解决方案。为了处理运行时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语句,然后发布存储过程。在运行时,当它命中我发布的存储过程时,我将首先在临时表中找到所有guids,然后开始删除。
无论如何,感谢您的所有投入。
https://stackoverflow.com/questions/47382331
复制相似问题