SQL Server 2012를 사용합니다.저장 프로 시저를 실행하려고하면 오류가 발생하는 이유는 무엇입니까?
Visual Studio에서 저장 프로 시저에 정수 배열을 전달해야합니다. 난 where
절에 전달 된 배열을 사용해야합니다. 여기
CREATE TYPE IdArray AS TABLE
(
Id int
);
그리고 내 저장 프로 시저 : 나는 table valued parameter
을 만들어이를 위해
ALTER PROCEDURE [dbo].[SP_TEST_TLP]
@List dbo.IdArray READONLY
AS
BEGIN
SET NOCOUNT ON;
SELECT *
FROM Clients
WHERE Clients.Id IN ('@List')
END
하지만 절차 창을 실행 저장 프로 시저 및 통과 값 (일부 정수)를 해고하려고 이 오류가 발생합니다.
Must pass parameter number 2 and subsequent parameters as '@name = value'. After the form '@name = value' has been used, all subsequent parameters must be passed in the form '@name = value'.
업데이트 :이 오류가 왜
DECLARE @return_value int
EXEC @return_value = [dbo].[SP_TEST_TLP]
@List = 1,6
SELECT 'Return Value' = @return_value
어떤 생각 : 여기 스토어드 프로 시저를 호출하는 방법을
? 내가 도대체 뭘 잘못하고있는 겁니까?
우리가 잘못하고있는 것을 지적하고 싶다면, proc을 실행하기 위해 사용하고있는 코드를 게시하십시오. 또한 저장 프로 시저 이름 접두어로 'sp_'을 사용하지 마십시오. SQL Server 시스템 저장 프로 시저를 나타냅니다. TVP는 동봉하지 마십시오. 대신'SELECT id FROM @ List'와 같은 부질의를 지정하십시오. –
'여기서 Clients.Id IN ('@List')'는 원하는 것을 수행하지 않습니다. 이미 올바른 구문을 사용하고 있습니다. http://stackoverflow.com/questions/40206849/why-i-get-error-when-i-try-to-create-stored-procedure –
절차를 실행하는 코드를 얻을 수 있습니까? 창문이 생기니? 프로 시저 창은 @name = value 구문을 사용하여 SP를 호출합니다. 쉼표로 분리 된 숫자 (1, 2, 3)로 숫자를 쓰는 경우 대부분은 아마도'@List = 1, 2, 3'로 해석 될 것이고 그것은 당신이 원하는 것이 아닙니다. – infiniteRefactor