[SQL] SQL 서버 SELECT INTO의 @variable?
SQLSQL 서버 SELECT INTO의 @variable?
나는 완벽하게 정상적으로 실행 제는 SQL (2008) procs 저장 중 하나에 다음과 같은 코드가 있습니다 :
CREATE PROCEDURE [dbo].[Item_AddItem]
@CustomerId uniqueidentifier,
@Description nvarchar(100),
@Type int,
@Username nvarchar(100),
AS
BEGIN
DECLARE @TopRelatedItemId uniqueidentifier;
SET @TopRelatedItemId =
(
SELECT top(1) RelatedItemId
FROM RelatedItems
WHERE CustomerId = @CustomerId
)
DECLARE @TempItem TABLE
(
ItemId uniqueidentifier,
CustomerId uniqueidentifier,
Description nvarchar(100),
Type int,
Username nvarchar(100),
TimeStamp datetime
);
INSERT INTO Item
OUTPUT INSERTED.* INTO @TempItem
SELECT NEWID(), @CustomerId, @Description, @Type, @Username, GETDATE()
SELECT
ItemId,
CustomerId,
@TopRelatedItemId,
Description,
Type,
Username,
TimeStamp
FROM
@TempItem
END
GO
그래서 너희들에 대한 질문의 라인을 따라 뭔가를 할 수있는 가능성이 있습니다 :
DECLARE @TempCustomer TABLE
(
CustomerId uniqueidentifier,
FirstName nvarchar(100),
LastName nvarchar(100),
Email nvarchar(100)
);
SELECT
CustomerId,
FirstName,
LastName,
Email
INTO
@TempCustomer
FROM
Customer
WHERE
CustomerId = @CustomerId
그래서 본인은 다음과 같은 문에서 메모리에서이 데이터를 재사용 할 수 있다고? SQL Server는 우 .... 그러나 내가 별도의 변수를 생성하고 같은 테이블에 대해 별도의 SELECT 문을 통해 그들의 각 하나를 초기화하고 싶지 않아요, 위의 문을 사용하여 착용감을 던졌습니다!
같은 테이블에 대해 여러 쿼리없이 라인을 따라 뭔가를 달성하는 방법에 대한 어떤 제안?
해결법
-
==============================
1.당신은 ... INTO ... 테이블 변수를 선택할 수 없습니다. 당신이 할 수있는 최선은 삽입 후, 먼저 만드는 것입니다. 귀하의 두번째 조각은이어야한다
당신은 ... INTO ... 테이블 변수를 선택할 수 없습니다. 당신이 할 수있는 최선은 삽입 후, 먼저 만드는 것입니다. 귀하의 두번째 조각은이어야한다
DECLARE @TempCustomer TABLE ( CustomerId uniqueidentifier, FirstName nvarchar(100), LastName nvarchar(100), Email nvarchar(100) ); INSERT INTO @TempCustomer SELECT CustomerId, FirstName, LastName, Email FROM Customer WHERE CustomerId = @CustomerId
-
==============================
2.당신은 단순히 나중에 사용하기 위해 몇 가지 변수를 할당하고 싶다면, 당신은이 라인을 따라 뭔가 한 번에 그 작업을 수행 할 수 있습니다 :
당신은 단순히 나중에 사용하기 위해 몇 가지 변수를 할당하고 싶다면, 당신은이 라인을 따라 뭔가 한 번에 그 작업을 수행 할 수 있습니다 :
declare @var1 int,@var2 int,@var3 int; select @var1 = field1, @var2 = field2, @var3 = field3 from table where condition
그 물건의 종류가 있다면 당신은 뒤에있어
-
==============================
3.당신은이 작업을 수행 할 수 있습니다
당신은이 작업을 수행 할 수 있습니다
SELECT CustomerId, FirstName, LastName, Email INTO #tempCustomer FROM Customer WHERE CustomerId = @CustomerId
나중에
SELECT CustomerId FROM #tempCustomer
당신은 #tempCustomer의 구조를 선언 할 필요가 없습니다
-
==============================
4.당신의 구문이 약간 밖으로 것 같습니다. 이것은 좋은 예제를 가지고
당신의 구문이 약간 밖으로 것 같습니다. 이것은 좋은 예제를 가지고
DECLARE @TempCustomer TABLE ( CustomerId uniqueidentifier, FirstName nvarchar(100), LastName nvarchar(100), Email nvarchar(100) ); INSERT @TempCustomer SELECT CustomerId, FirstName, LastName, Email FROM Customer WHERE CustomerId = @CustomerId
그런 다음 나중에
SELECT CustomerId FROM @TempCustomer
-
==============================
5.당신 같은 소리는 임시 테이블을합니다. http://www.sqlteam.com/article/temporary-tables
당신 같은 소리는 임시 테이블을합니다. http://www.sqlteam.com/article/temporary-tables
#TempTable 당신의 SP에 걸쳐 사용할 수 있다는 점에 유의하십시오.
## TEMPTABLE 모두에 사용할 수 있습니다.
-
==============================
6.저도 같은 문제에 대한 해결책을 찾고 질문을 발견; 어떤 다른 답변이 점에 실패하는 것은 일시적인없는, 영구적 인 형태로 프로 시저의 모든 실행을 위해 테이블의 이름을 변경하는 변수를 사용하는 방법입니다.
저도 같은 문제에 대한 해결책을 찾고 질문을 발견; 어떤 다른 답변이 점에 실패하는 것은 일시적인없는, 영구적 인 형태로 프로 시저의 모든 실행을 위해 테이블의 이름을 변경하는 변수를 사용하는 방법입니다.
지금까지 내가 무엇을 사용하는 변수와 전체 SQL 코드를 연결할. 이 같이 :
declare @table_name as varchar(30) select @table_name = CONVERT(varchar(30), getdate(), 112) set @table_name = 'DAILY_SNAPSHOT_' + @table_name EXEC(' SELECT var1, var2, var3 INTO '+@table_name+' FROM my_view WHERE string = ''Strings must use double apostrophe'' ');
난 당신이 더 나은 방법을 발견했습니다 만약 그렇다면, 코드가 너무 큰 경우는 성가신 될 수 그것은 도움이되기를 바랍니다 만, 제발 공유!
-
==============================
7.
"SELECT * INTO @TempCustomer FROM Customer WHERE CustomerId = @CustomerId"
어떤 수단 새로운 @tempCustomer의 tablevariable을 작성하고 고객으로부터 데이터를 삽입. 당신은 이미 다시 선언하는 필요가 없습니다 그래서 위를 선언했다. 더 나은로 이동합니다
INSERT INTO @tempCustomer SELECT * FROM Customer
from https://stackoverflow.com/questions/4823880/sql-server-select-into-variable by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 SQL Server의 소수점 값을 저장하는 방법? (0) | 2020.05.30 |
---|---|
[SQL] LIKE 대 전체 텍스트 검색 무엇입니까 (0) | 2020.05.30 |
[SQL] SQL NoSQL의 VS (MySQL의) (CouchDB를) [폐쇄] (0) | 2020.05.30 |
[SQL] 저장 프로 시저에 대한 명명 규칙은 무엇인가? [닫은] (0) | 2020.05.30 |
[SQL] SQL 문은 열 유형을 얻을 수 있습니다 (0) | 2020.05.30 |