Mel*_*ine 3 sql t-sql sql-server sql-server-2008
我创建了一个函数,该函数返回如下表格值
CREATE FUNCTION dbo.splitText(@strArgs VARCHAR(4000))
RETURNS @tab TABLE
(
[Key] VARCHAR(255) NOT NULL,
Value VARCHAR(4000) NOT NULL
)
AS
BEGIN
INSERT INTO @tab VALUES('Key1', 'Value1')
INSERT INTO @tab VALUES('Key2', 'Value2')
RETURN
END
GO
OUtput:
Key Value
*************
Key1 Value1
Key2 Value2
Run Code Online (Sandbox Code Playgroud)
我需要的第二个功能是从上面的函数返回表值.
CREATE FUNCTION dbo.TableValuedParameterExample11()
RETURNS @TmpTable1 table (Value VARCHAR(4000) NOT NULL)
AS
BEGIN
DECLARE @StateDescp VARCHAR(250)
Select * into TmpTable1 from (Select value from dbo.Splittext('Test')) aa
RETURN
END
GO
Run Code Online (Sandbox Code Playgroud)
完成功能后,我运行以下查询.
Select * from TmpTable1.
我需要输出
Value
********
Value1
Value2
Run Code Online (Sandbox Code Playgroud)
我需要这个.
但我得到了错误
Invalid use of a side-effecting operator 'SELECT INTO' within a function.
Run Code Online (Sandbox Code Playgroud)
当你写作时,select * into [table]...你必须确定它[table]不存在.使用insert into [table] select ...来代替.另外,@当你处理变量或函数表时,你需要一个:
CREATE FUNCTION dbo.TableValuedParameterExample11()
RETURNS @TmpTable1 table (Value VARCHAR(4000) NOT NULL)
AS
BEGIN
DECLARE @StateDescp VARCHAR(250)
INSERT INTO
@TmpTable1([Value])
SELECT
value
FROM
dbo.SplitArgs('Test')) aa
RETURN
END
GO
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
766 次 |
| 最近记录: |