ALTER PROCEDURE [dbo].[spc_UpdateProductPDFCase]
@ProdId int,
@ProdModifiedDate DateTime,
@ProdModifiedBy nvarchar(50) ='',
@ColumnInput nvarchar(MAX),
@File nvarchar(50)
AS
BEGIN
UPDATE Product
SET
ProdModifiedBy = @ProdModifiedBy,
ProdModifiedDate = @ProdModifiedDate
WHERE ProductID = @ProdId
--Split up for troubleshooting
Declare @sql nvarchar(max)
SET @sql = 'UPDATE Product
SET '
+ @ColumnInput + ' = ' + @File +
' WHERE ProductID = ' + cast(@ProdId AS nvarchar(max))
execute sp_executesql @sql
END
내부 사이트의 관리자 패널에있는 4 개의 PDF 업 로더에 대한 업데이트 설명입니다. 사이트에서이 저장 프로 시저 1 열 이름 (@ColumnInput
)과 파일 이름 (예 : Filename.pdf
(@File
))을 전달합니다. 업로드를 테스트 할 때 파일을 바인딩 할 수 없다는 오류가 표시됩니다.SQL - 다중 부분 식별자 "LargerPDFTest.pdf"를 바인딩 할 수 없습니다.
"LargerPDFTest.pdf"라는 멀티 파트 식별자를 바인딩 할 수 없습니다.
내가 선호하는 것은 동적 SQL을 사용하지 않고 업데이트를 수행하는 것이지만 다른 사례 (예 : 사례 명세서)와도 관련이 없습니다.
편집 : 문제 해결을 위해 여기에 2 개의 진술 만 있습니다. 내가 가지고있는 문제를 해결하면 나는 결국 두 가지를 결합하게 될 것이다.
@ColumnInput 매개 변수의 값은 무엇입니까? – HaveNoDisplayName
@ColumnInput은 열의 이름입니다.이 경우 열리는 업 로더에 따라 "ProdOptV12", "ProdOptV13", "ProdOptV14"또는 "ProdOptV15"로 전달됩니다. 나는 여전히 문자열을 전달하는 것이 문제인지 확실하지 않았기 때문에 SQL을 배우고있다. – Barix9
왜 매개 변수로 업데이트 할 열을 전달하고 있습니까? 이것은 SQL 주입 공격에 대해 열려 있습니다. –