Luc*_*ini 5 sql sql-server oracle stored-procedures
我要将存储过程从pl/sql转换为SQL Server.该过程使用游标循环select查询结果.是否有与ORACLE rowtype构造等效的SQL Server ?
Har*_*nch 18
与oracle相比,这是一个不喜欢SQL Server的重要原因.
我很失望SS没有%TYPE和%ROWTYPE.这些在最初编写代码时节省了工作时间,并且在列类型需要更改的情况下,它可以节省必须返回并重新处理所有代码.
在Oracle中我曾经写过类似的东西:
DECLARE @MyRowVar AS ATable%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;
Run Code Online (Sandbox Code Playgroud)
这让我非常伤心.
哈维
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
Run Code Online (Sandbox Code Playgroud)
作为@HarveyFrench回应,没有@rowtype。生成所有列变量您可以使用此选择并从结果中复制粘贴:
SELECT 'DECLARE @customPrefix' + COLUMN_NAME + ' ' + DATA_TYPE + ';'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'Your_table'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17953 次 |
| 最近记录: |