我想創建函數,它使用表名作爲參數。在我搜索時,我需要使用動態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