source

SQL Server에서 해당하는 %Rowtype

factcode 2023. 8. 7. 23:10
반응형

SQL Server에서 해당하는 %Rowtype

저장 프로시저를 pl/sql에서 SQL Server로 변환하려고 합니다.이 절차는 커서를 사용하여 결과를 루프합니다.select쿼리. Oracle과 동일한 SQL Server가 있습니까?rowtype건설?

이것이 오라클과 비교할 때 SQL Server를 싫어하는 큰 이유입니다.

SS에 %TYPE과 %ROWTYPE이 없다는 것이 너무 실망스럽습니다.이렇게 하면 처음 코드를 작성할 때 몇 시간 동안 작업할 수 있고 열의 유형을 변경해야 하는 경우 다시 돌아가서 모든 코드를 다시 작업해야 하는 시간을 절약할 수 있습니다.

Oracle에서 저는 다음과 같은 글을 쓰곤 했습니다.

@MyRowVar를 %RowTYPE 테이블로 선언합니다.

SQL Server에서 저는 다음과 같이 적어야 했습니다.

DECLARE @External_ID                AS BIGINT = NULL;
DECLARE @PlatformID                 AS INT = NULL;
DECLARE @ActorIDOfReseller          AS INT = NULL;
DECLARE @ActorIDOfClient            AS INT = NULL;
DECLARE @ActorIDOfExtension         AS INT = NULL;
DECLARE @CallType                   AS NCHAR (10) = NULL;
DECLARE @CallInitiatedDate          AS DATE = NULL;
DECLARE @CallInitiatedTimeHH24MI    AS TIME (0) = NULL;
DECLARE @TimePeriodID               AS INT = NULL;
DECLARE @CallAnswered               AS DATETIME = NULL;
DECLARE @CallAnsweredYN             AS BIT = NULL;
DECLARE @CallDispositionID          AS INT = NULL;
DECLARE @CountryID                  AS INT = NULL;
DECLARE @CallPrefixID               AS INT = NULL;
DECLARE @FromNumber                 AS VARCHAR (32) = NULL;
DECLARE @ToNumber                   AS VARCHAR (80) = NULL;
DECLARE @CallDuration               AS INT = NULL;
DECLARE @CallCostToExtension        AS DECIMAL (10, 6) = NULL;
DECLARE @CallCostToClient           AS DECIMAL (10, 6) = NULL;
DECLARE @CallCostToReseller         AS DECIMAL (10, 6) = NULL;
DECLARE @CallCostToAdmin            AS DECIMAL (10, 6) = NULL;
DECLARE @Flow                       AS VARCHAR (3) = NULL;
DECLARE @CallStart                  AS DATETIME = NULL;
DECLARE @MoneyUnit                  AS VARCHAR (32) = NULL;
DECLARE @Prefix                     AS VARCHAR (32) = NULL;
DECLARE @External_CallID            AS VARCHAR (255) = NULL;

이것은 저를 매우 슬프게 합니다.

하비

커서를 사용하는 SQL 방법은 아래와 같습니다.

DECLARE @colA varchar(50), @colB varchar(50)

DECLARE myCursor CURSOR FOR
Select columnA, columnB From table

OPEN myCursor

FETCH NEXT FROM myCursor INTO @colA, @colB

WHILE @@FETCH_STATUS = 0
BEGIN

--do something with @colA and @colB

FETCH NEXT FROM myCursor INTO @colA, @colB

END

CLOSE myCursor
DEALLOCATE myCursor

참조 링크

~하듯이@HarveyFrench없다고 응답했습니다.@rowtype모든 열 변수를 생성하려면 이 선택 및 복사 붙여넣기를 결과에서 사용할 수 있습니다.

SELECT 'DECLARE @customPrefix' + COLUMN_NAME  + '  ' +  DATA_TYPE + ';'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE 
TABLE_NAME = 'Your_table' 

언급URL : https://stackoverflow.com/questions/4022460/rowtype-equivalent-in-sql-server

반응형