use*_*320 3 sql sql-server sql-server-2008-r2
我问这个问题是针对 SQL Server 2008 R2
我想知道是否有办法在单个批处理语句中创建多个函数。
我以下面的代码为例;假设我想取一个字符串并按字母顺序重新排列它的字母。所以,“你好”会变成“eHllo”
CREATE FUNCTION char_split (@string varchar(max))
RETURNS @characters TABLE
(
chars varchar(2)
)
AS
BEGIN
DECLARE @length int,
@K int
SET @length = len(@string)
SET @K = 1
WHILE @K < @length+1
BEGIN
INSERT INTO @characters
SELECT SUBSTRING(@string,@K,1)
SET @K = @K+1
END
RETURN
END
CREATE FUNCTION rearrange (@string varchar(max))
RETURNS varchar(max)
AS
BEGIN
DECLARE @SplitData TABLE (
chars varchar(2)
)
INSERT INTO @SplitData SELECT * FROM char_split(@string)
DECLARE @Output varchar(max)
SELECT @Output = coalesce(@Output,' ') + cast(chars as varchar(10))
from @SplitData
order by chars asc
RETURN @Output
END
declare @string varchar(max)
set @string = 'Hello'
select dbo.rearrange(@string)
Run Code Online (Sandbox Code Playgroud)
当我尝试运行此代码时,出现此错误:
'CREATE FUNCTION' must be the first statement in a query batch.
Run Code Online (Sandbox Code Playgroud)
我尝试将每个函数包含在 BEGIN END 块中,但没有运气。有什么建议吗?
| 归档时间: |
|
| 查看次数: |
1576 次 |
| 最近记录: |