我想要创建函数,它使用表名作为参数。当我搜索时,我需要使用动态 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
但是会出错。有什么方法可以进行吗?
我尝试以这种方式使用动态sql
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)
但是得到Invalid use of a side-effecting operator 'EXECUTE STRING' within a function.
有谁知道如何绕过这个约束?