【问题标题】:MS SQL Server to Oracle script translationMS SQL Server 到 Oracle 脚本翻译
【发布时间】:2018-06-02 02:27:22
【问题描述】:

我在 SQL Server 中编写了一个脚本,现在看来我需要在 Oracle 中使用它。我现在尝试了一段时间,除了不断收到一些错误之外,我的尝试无法实现任何目标。 有人可以告诉我如何修改以下脚本以便它可以在 Oracle 中运行吗?

DECLARE @oid VARCHAR(50);
DECLARE @toids TABLE (oid VARCHAR(50))
INSERT INTO @toids (oid) SELECT oid FROM awftask WHERE oid in (SELECT oid 
FROM agltransactmap)



WHILE (SELECT COUNT(*) FROM @toids WHERE oid IS NOT NULL) > 0
BEGIN
SET @oid = (SELECT TOP 1 oid FROM @toids); 

INSERT INTO awftaskfin (some staff) FROM awftask
WHERE oid in (@oid);

这里有一些其他的插入和删除,然后脚本结束:

END

非常感谢您对此提供任何帮助。

【问题讨论】:

  • SQL Developer,工具 > 迁移 > Scratch 编辑器。 SQL Dev 确实具有可以帮助将 T-SQL 转换为 PL/SQL 的功能 - 但您需要首先根据您的需要弄清楚在 Oracle 中做某事的最佳方法是什么。直接的 1:1 翻译可能有效,但可能不是正确的方法。
  • 您尝试了什么,遇到了什么错误?

标签: sql-server oracle plsql database-migration


【解决方案1】:
CREATE TYPE StringList IS TABLE OF VARCHAR2(50);
/

DECLARE
  toid StringList;
BEGIN
  SELECT oid
  BULK COLLECT INTO toid
  FROM   awftask
  WHERE  oid IN ( SELECT oid FROM agltransactmap );

  FOR i IN 1 .. toid.COUNT LOOP
    INSERT INTO awftaskfin (some staff) VALUES ( toid(i) );
    -- here are some other inserts and deletes
  END LOOP;
END;
/

【讨论】:

    猜你喜欢
    • 2019-02-23
    • 2023-03-29
    • 2020-07-05
    • 2013-08-09
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    • 1970-01-01
    相关资源
    最近更新 更多