CREATE FUNCTION f_test (@str varchar(100)) RETURNS TABLE AS RETURN (select @str as aa)
if object_id('f_test') is not null drop function f_test go CREATE FUNCTION f_test (@str varchar(100)) RETURNS TABLE AS RETURN (select @str as aa) go select * from dbo.f_test('1234') /* aa ---- 1234 */ drop function f_test
我的意思表达错了!!@str在这里是一个输入select查询! 比如要得到一个select * from test的结果!! 通过函数select * from f_test('select * from test')
你说这样吗! CREATE FUNCTION f_test (@str varchar(100)) RETURNS TABLE AS RETURN (exec(@str))这样编译都不过!!
RETURNS TABLE
AS
RETURN (select @str as aa)
go
CREATE FUNCTION f_test (@str varchar(100))
RETURNS TABLE
AS
RETURN (select @str as aa)
go
select * from dbo.f_test('1234')
/*
aa
----
1234
*/
drop function f_test
比如要得到一个select * from test的结果!!
通过函数select * from f_test('select * from test')
CREATE FUNCTION f_test (@str varchar(100))
RETURNS TABLE
AS
RETURN (exec(@str))这样编译都不过!!
2.用户自定义函数中不允许使用任何非确定的系统函数,比如getdate()。
select * from 视图 改动为 select * from fun(@sql)
控制流语句。
DECLARE 语句,该语句定义函数局部的数据变量和游标。
SELECT 语句,该语句包含带有表达式的选择列表,其中的表达式将值赋予函数的局部变量。
游标操作,该操作引用在函数中声明、打开、关闭和释放的局部游标。只允许使用以 INTO 子句向局部变量赋值的 FETCH 语句;不允许使用将数据返回到客户端的 FETCH 语句。
INSERT、UPDATE 和 DELETE 语句,这些语句修改函数的局部 table 变量。
EXECUTE 语句调用扩展存储过程。
根据定义,你可以将函数定义成为多语句函数,来调用存储过程
RETURNS TABLE(a char(10)....)