函數有很多限制,不能使用動態語句,不能使用臨時表等等。。。細看一下,直接寫語句就行了,不用動態語句
insert into @re select id,parid,@I from videoclasspic where charindex(','+cast(id as varchar(10))+',',','+@parentid+',')>0 and isvalid=1
SqlServer表值函數:
Sql server 的表值函數是返回一個Table類型,table類型相當與一張存儲在內存中的一張虛擬表。
實現表值函數很簡單:
下面是一個不帶輸入參數的表值函數
create function tvpoints()
returns
table
as
return
(
select
*
from
tb_users
);
這個表值函數數查詢所有用戶表的數據
對於多語句表值函數,在 BEGIN...END 語句塊中定義的函數體包含一系列 Transact-SQL 語句,這些語句可生成行並將其插入將返回的表中。
以下示例創建了一個表值函數.
create
function
tvpoints()
returns
@points
table
(x
float
, y
float
)
as
begin
insert
@points
values
(1,2);
insert
@points
values
(3,4);
return
;
end
|
查詢表值函數跟查詢普通表一樣
select * from tvpoints()
返回的是一張表
帶輸入參數的表值函數
create
function
tvpoints2(@x
AS
int
,@y
as
int
)
returns
@points
table
(x
float
, y
float
)
as
begin
insert
@points
values
(@x,@y);
return
;
end
|
