我想创建函数,它使用表名作为参数。在我搜索时,我需要使用动态sql。我试试这样的代码:在sql函数中使用表名作为参数
CREATE FUNCTION get_column_id
(
@TableName VARCHAR(30),
@ColumnName VARCHAR(30),
)
RETURNS int
AS
BEGIN
IF EXISTS
(
DECLARE @SQL VARCHAR(50)
SET @sql = 'SELECT' + @ColumnName + 'FROM' + @TableName + 'WHERE @ColumnName = @ColumnNameValue';
EXEC(@sql)
)
BEGIN
但是得到错误。有什么办法可以解决这个问题吗?
我尝试这样的方式
DECLARE @SQL VARCHAR(50)
SET @SQL = 'SELECT' + @ColumnName + 'FROM' + @Table + 'WHERE @ColumnName = @ColumnNameValue'
EXEC(@SQL)
DECLARE @TableName table (Name VARCHAR(30))
INSERT INTO @TableName VALUES (@SQL)
IF EXISTS
(SELECT Name FROM @TableName WHERE Name = @ColumnNameValue)
使用动态SQL,但得到Invalid use of a side-effecting operator 'EXECUTE STRING' within a function.
有谁知道如何绕过这个限制?
好了,你不能在一个函数的SQL Server – Lamak 2013-03-20 13:41:38