[SQL] 테이블 출력 매개 변수를 사용하여 저장 프로 시저를 만들 수 없습니다
SQL테이블 출력 매개 변수를 사용하여 저장 프로 시저를 만들 수 없습니다
이 코드를 가지고 :
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[GetProfitDeals]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[GetProfitDealsVar2]
GO
IF EXISTS(SELECT 1 FROM sys.types WHERE name = 'TableOrderType' AND is_table_type = 1 AND SCHEMA_ID('dbo') = schema_id)
DROP TYPE [dbo].[TableOrderType];
CREATE TYPE TableOrderType AS TABLE(
Order_ID int NOT NULL,
Order_AccNumber int NOT NULL,
Order_OpenDate datetime NULL,
Order_CloseDate datetime NULL,
Order_Profit float NULL
);
GO
CREATE PROCEDURE [dbo].[GetProfitDeals](@OpenDate datetime = NULL, @CloseDate datetime = NULL, @MinProfit float = NULL, @out TableOrderType OUTPUT READONLY)
AS
INSERT INTO @out
SELECT * FROM [Orders]
WHEN [Orders].[OpenDate] >= @OpenDate
GO
하지만 "건설에 대한 구문이 잘못되었습니다 'READONLY'의"오류가 발생합니다. 나는이 문제를 해결할 수있는 방법, 나 때문에 정말 출력 테이블 매개 변수가 필요합니다.
해결법
-
==============================
1.표 매개 변수는 읽기 전용입니다. 당신은 그들로 선택할 수 없습니다. 사용 테이블 반환 매개 변수 :
표 매개 변수는 읽기 전용입니다. 당신은 그들로 선택할 수 없습니다. 사용 테이블 반환 매개 변수 :
그리고 매개 변수 테이블 반환 :
읽기 배열과 대안에 대한 포괄적 인 논의를위한 SQL Server의 나열합니다.
-
==============================
2.레무스 상태로, 당신은 정확하게 그렇게 할 수 있지만 대신 사용자 정의 기능을 사용하여 달성하고자하는 것을 달성 할 수있다 : TSQL 함수 또는 저장 프로 시저에서 테이블을 반환
레무스 상태로, 당신은 정확하게 그렇게 할 수 있지만 대신 사용자 정의 기능을 사용하여 달성하고자하는 것을 달성 할 수있다 : TSQL 함수 또는 저장 프로 시저에서 테이블을 반환
형태로 정의 난 당신이 기능에 테이블을 정의하지해야합니다 생각하지만 테이블에 데이터를 반환하는
from https://stackoverflow.com/questions/19270727/cant-create-stored-procedure-with-table-output-parameter by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL의 기본값 설정은 MS Access에서 작동하지 (0) | 2020.06.16 |
---|---|
[SQL] phpMyAdmin에 - 총 기록 횟수에 따라 다름 (0) | 2020.06.16 |
[SQL] 어떻게 SELECT 쿼리에서 열을 제외하려면? (0) | 2020.06.16 |
[SQL] SQL 주입을 감지하는 정규 표현식 (0) | 2020.06.16 |
[SQL] SQL Server의 텍스트에서 추출 번호 (0) | 2020.06.16 |