首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

表值用户定义函数 引入变量  有关问题

2012-04-06 
表值用户定义函数 引入变量  问题CREATE FUNCTION LAG(-- Add the parameters for the function here@tabl

表值用户定义函数 引入变量  问题
CREATE FUNCTION LAG 
(
-- Add the parameters for the function here
@table VARCHAR(20),         --表名
@p1 char,              --列名
  @p2 char --条件值
)
RETURNS TABLE 
AS
RETURN 
(
-- Add the SELECT statement with parameter references here
SELECT @p1 FROM dbo.@table WHERE @p1=@p2
)
GO

RETURN语句中只认@p2,但不认@p1和@table

如果直接用字符串替代@p1,@table,
比如:SELECT @p1 FROM dbo.@table WHERE @p1=@p2改成
   select ID from dbo.Users where ID=@p2
则是可以.


但这样的话,就不能做到自定义函数通用

请教大师们,有没有办法实现 SELECT @p1 FROM dbo.@table WHERE @p1=@p2



[解决办法]

SQL code
exec 'SELECT '+@p1+'  FROM dbo.'+@table+' WHERE '+@p1+'='+@p2+''
[解决办法]
探讨
SQL codeexec'SELECT'+@p1+' FROM dbo.'+@table+' WHERE'+@p1+'='+@p2+''

[解决办法]
SQL code
CREATE PROC p_testasSELECT GETDATE() agoCREATE VIEW v_testAS SELECT * FROM OPENROWSET('SQLOLEDB.1','server=FI6\SQL2008;uid=sa;pwd=123','exec test11.dbo.p_test')goSELECT * FROM V_TEST/*a2009-09-01 11:08:30.197*/CREATE FUNCTION FN_TEST()RETURNS TABLE AS RETURN(    SELECT * FROM OPENROWSET('SQLOLEDB.1','server=FI6\SQL2008;uid=sa;pwd=123','exec test11.dbo.p_test'))goSELECT * FROM FN_TEST()/*a2009-09-01 11:08:30.197*/本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/htl258/archive/2009/09/10/4539388.aspx 

热点排行
Bad Request.