Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 当传递Id和表名时,我需要创建SQL函数来获取名称_Sql Server 2008 - Fatal编程技术网

Sql server 2008 当传递Id和表名时,我需要创建SQL函数来获取名称

Sql server 2008 当传递Id和表名时,我需要创建SQL函数来获取名称,sql-server-2008,Sql Server 2008,考试: 错误是什么?声明@sl_col的位置在哪里?另外,如果您使用的是sp_executesql,则不需要将动态参数部分放在查询字符串之外,看起来您使用的是exec(动态sql)和exec sp_executesql(动态sql)抱歉,它的col\u nameAFAIK,不能在用户定义的函数中使用动态sql。您可以将函数更改为存储过程,但我建议您重新考虑整个方法。thanx而非work errors Msg 137,级别15,状态2,过程getName,第15行必须声明标量变量“@r”。@Mo

考试:


错误是什么?声明
@sl_col
的位置在哪里?另外,如果您使用的是
sp_executesql
,则不需要将动态参数部分放在查询字符串之外,看起来您使用的是
exec(动态sql)
exec sp_executesql(动态sql)
抱歉,它的col\u nameAFAIK,不能在用户定义的函数中使用动态sql。您可以将函数更改为存储过程,但我建议您重新考虑整个方法。thanx而非work errors Msg 137,级别15,状态2,过程getName,第15行必须声明标量变量“@r”。@MohamedAL Hlwany,再次检查,我的错,我忘了声明
@r
ALTER FUNCTION [dbo].[getName](@Id int,@Table_Name sysname,@col_name nvarchar(30),@col_condition)
RETURNS nvarchar(400)
AS
BEGIN
    DECLARE @r nvarchar(250)
    DECLARE @DynamicSQL nvarchar(4000)
    SET @DynamicSQL = N'SELECT '+@sl_col+' FROM ' + @Table_Name +' WHERE     @col_condition='+ @id
    EXECUTE sp_executesql @DynamicSQL
   set @r=EXECUTE sp_executesql @DynamicSQL
    RETURN @r
END
SELECT Emp_Name FROM Emp WHERE emp_id=1
ALTER FUNCTION [dbo].[getName]
(@id int,@Table_Name sysname,@col_name nvarchar(30),@col_condition) 

RETURNS nvarchar(400) 

AS BEGIN 

DELCARE @r varchar(50)
DECLARE @DynamicSQL nvarchar(4000) 

SET @DynamicSQL = 'SELECT @r = ' + @col_name + ' FROM ' + @Table_Name + ' WHERE ' + @col_condition + ' = ' + @id

EXECUTE (@DynamicSQL)

RETURN @r 

END