방금 저장 프로 시저를 작성하는 중이고 한 곳에서 심하게 붙어 있습니다.데이터 삭제 삭제 명령문 작성
기본적으로 내 저장 프로 시저는 다음과 같습니다
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 '[email protected]+' where ApplicationNumber =' + @ApplicationNumber)
나는 런타임에 내 매개 변수를 얻을 것이다하지만 실제 문제는 내가 신청 번호를 얻기 전에 내 삭제 명령문을 구성하려는이고 나는 그런 내 삭제 명령문을 구성하려면 내 응용 프로그램 번호를 얻을 때 테이블에서 모든 delete 문을 가져와 실제 응용 프로그램 번호로 @ApplicationNumber
을 바꾸고 데이터베이스에서 레코드를 삭제하는 방법.
기본적으로 응용 프로그램 번호가있는 삭제 명령문을 템플릿으로 사용하고 런타임에 레코드를 삭제하려고합니다.
도와주세요!
왜 하시겠습니까? SP 또는 매개 변수가있는 쿼리를 사용하면 SQL Server에서 동일한 실행 계획을 다시 사용할 수 있습니다. 문자열 함수를 사용하여 @applicationNumber가 이미 포함 된 DELETE 문을 만드는 경우 SQL Server는 매번 새 실행 계획 *을 컴파일해야합니다. SQL 인젝션 공격의 변형 위험은 말할 것도 없습니다. (SQL 문에 해당 테이블을 작성할 수있는 모든 사용자는 거의 모든 작업을 수행 할 수 있습니다) *. 왜 너는 뭐하려고? 그것은 당신이하려고 노력해야 할 일을하려고 애 쓰고있는 것처럼 느껴집니다 ... – MatBailie
왜 무엇을하려고합니까? 좋아, 그래서 내 삭제 스크립트 빌드 시간에 한 번만 실행됩니다 및 빌드 시간에 삭제 계층 구조와 템플릿 응용 프로그램 번호와 함께 삭제 스크립트를 작성하고 있습니다. 왜 내가 그것을하고있다 : - 내 응용 프로그램에 대한 데이터를 제거하는 구현 싶어요. 내 응용 프로그램 번호와 관련된 데이터베이스에서 각 행을 삭제하고 싶습니다 ... – Abhijit
삭제할 응용 프로그램 번호를 특정 기준에 따라 결정하는 창 스케줄러를 갖게되며 일단 해당 기준을 충족하면 나를 보낼 것입니다 내 데이터를 제거하는 데 사용할 응용 프로그램 번호 ... – Abhijit