首页 > 解决方案 > 需要将以下存储过程从 Oracle 转换为 SQL

问题描述

我需要将以下存储过程从 Oracle 转换为 SQL,我尝试通过 SqlSever 迁移助手将其转换,但无法转换动态查询。我还需要知道我们如何改变序列并获得 nextval:

create or replace 
procedure dep_reset_seq( p_seq_name in varchar2,p_Start_value integer )
is
    l_val number;
begin
    execute immediate
    'select ' || p_seq_name || '.nextval from dual' INTO l_val;

    execute immediate
    'alter sequence ' || p_seq_name || ' increment by -' || l_val || 
                                                          ' minvalue ' || p_Start_value;

    execute immediate
    'select ' || p_seq_name || '.nextval from dual' INTO l_val;

    execute immediate
    'alter sequence ' || p_seq_name || ' increment by 1 minvalue  ' || p_Start_value;
end;

标签: sqlplsqloracle12c

解决方案


SQL Server 从 2012 年起支持序列,有一个 alter sequence 命令:https ://docs.microsoft.com/en-us/sql/t-sql/statements/alter-sequence-transact-sql?view=sql-server -2017 更改序列的命令格式与 Oracle 非常相似。

获取下一个值是一种不同格式的命令,使用NEXT VALUE构造访问。

https://docs.microsoft.com/en-us/sql/t-sql/functions/next-value-for-transact-sql?view=sql-server-2017

这些概念中的每一个都非常容易搜索,并且存在非常全面的文档 - 那么您是否遇到了更具体的问题?


推荐阅读