将SQL Server代码转换为Oracle函数 创建函数dbo.Alphaorder(@str VARCHAR(50)) 返回VARCHAR(50) 开始 声明@lenint, @cnt INT=1, @str1 VARCHAR(50)='', @输出VARCHAR(50)=” 选择@len=len(@str) 而@cnt ajnu
这看起来像是一个写得很糟糕的函数 如果您需要像Oracle SQL中的函数那样执行某些操作,您可以直接使用Oracle SQL功能来执行,而无需编写自己的函数 即使出于某种原因,您确实需要编写一个函数,让SQL为您完成这项工作可能是最简单的方法(如果您的上下文是纯SQL,则与此相同) 大概是这样的:将SQL Server代码转换为Oracle函数 创建函数dbo.Alphaorder(@str VARCHAR(50)) 返回VARCHAR(50) 开始 声明@lenint, @cnt INT=1, @str1 VARCHAR(50)='', @输出VARCHAR(50)=” 选择@len=len(@str) 而@cnt ajnu,oracle,plsql,database-migration,Oracle,Plsql,Database Migration,这看起来像是一个写得很糟糕的函数 如果您需要像Oracle SQL中的函数那样执行某些操作,您可以直接使用Oracle SQL功能来执行,而无需编写自己的函数 即使出于某种原因,您确实需要编写一个函数,让SQL为您完成这项工作可能是最简单的方法(如果您的上下文是纯SQL,则与此相同) 大概是这样的: CREATE FUNCTION dbo.Alphaorder (@str VARCHAR(50)) returns VARCHAR(50) BEGIN DECLARE @len
CREATE FUNCTION dbo.Alphaorder (@str VARCHAR(50))
returns VARCHAR(50)
BEGIN
DECLARE @len INT,
@cnt INT =1,
@str1 VARCHAR(50)='',
@output VARCHAR(50)=''
SELECT @len = Len(@str)
WHILE @cnt <= @len
BEGIN
SELECT @str1 += Substring(@str, @cnt, 1) + ','
SET @cnt+=1
END
SELECT @str1 = LEFT(@str1, Len(@str1) - 1)
SELECT @output += Sp_data
FROM (SELECT Split.a.value('.', 'VARCHAR(100)') Sp_data
FROM (SELECT Cast ('<M>' + Replace(@str1, ',', '</M><M>') +
'</M>' AS XML) AS Data) AS A
CROSS APPLY Data.nodes ('/M') AS Split(a)) A
ORDER BY Sp_data
RETURN @output
END
SELECT dbo.Alphaorder ('juan') --> ajnu
你对你正在做的事做过什么尝试吗。快速的谷歌搜索让我找到了
create or replace function alphaorder(str varchar2) return varchar2
as
output varchar2(4000);
begin
select listagg(ch) within group (order by ch)
into output
from ( select substr(str, level, 1) as ch
from dual
connect by level <= length(str)
)
;
return output;
end;
/
select alphaorder('juan') as alpha_ordered from dual;
ALPHA_ORDERED
-------------
ajnu