テーブル名をパラメーターとして使用する関数を作成したい。検索すると、動的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.
誰でもこの制約を回避する方法を知っていますか?