我主要使用SQL。我不知道如何将该查询转换为Oracle。有人能告诉我如何转换吗?
DECLARE @START_YEAR INT,@MONTH INT, @END_YR INT
SELECT
@START_YEAR = 2010,
@END_YR = 2010,
@MONTH = 1
WHILE ( @START_YEAR <= @END_YR)
BEGIN
WHILE ( @MONTH <= 12)
BEGIN
PRINT 'INSERT INTO dbo.Mem_TXN
([VALUE]
,[BEGIN_DATE]
,[END_DATE]
,[CREATED_BY]
,[CREATED_DATE]
,[MODIFIED_BY]
,[MODIFIED_DATE])
VALUES
(''RGLR''
,''' + cast( Convert(date, DATEADD(MONTH, @MONTH - 1, DATEADD(YEAR, @START_YEAR - 1900, 0))) AS varchar) + '''
,''' + cast( Convert(date,DATEADD(MONTH, @MONTH, DATEADD(YEAR, @START_YEAR - 1900, -1))) AS VARCHAR) + '''
,''admin''
,' +FORMAT(GETDATE(), 'yyyy-mm-dd hh:mm')+ '
,''admin''
,' +FORMAT(GETDATE(), 'yyyy-mm-dd hh:mm')+ '
,0);
'
SET @MONTH = @MONTH + 1
END
SET @MONTH = 1
SET @START_YEAR = @START_YEAR + 1
END
此SQL是Oracle生成输入语句所必需的。提前感谢您。
2条答案
按热度按时间fbcarpbf1#
我试着用Oracle Sql Developer,代码是这样的:
后来结果是这样的:view result
ryevplcw2#
下面是一个插入语句,它可以满足您的需要:
可以说,这比递归CTE更容易阅读和遵循,但您也可以按如下所示执行相同的操作:
注意:我假设您能够确定如何指定开始日期以及要生成日期列表的月份。
另请注意,在Oracle中,DATE格式包含时间元素,因此,如果您使用dbo.men_txn表与其他日期进行比较,请记住这一点-例如,如果您查询2022年1月1日到2022年1月31日之间的日期,则将丢失日期在2022年1月31日午夜之后的行。