Я пишу сценарий CREATE TABLE для хранилища данных Azure, который будет воссоздавать схему многораздельной таблицы. Мой сценарий имеет повторяющийся код, который запрашивает таблицу и создает разделенную запятыми строку из значений столбцов. Я пытаюсь переместить этот повторяющийся код в отдельную функцию, чтобы его можно было повторно использовать.
CREATE FUNCTION [dbo].[fnCreateStringFromColValues] (
@tblName [NVARCHAR](255)
, @colName [NVARCHAR](255)
, @RNumColName [NVARCHAR](255)
)
RETURNS VARCHAR(MAX)
AS
BEGIN
DECLARE @nRows INT = (SELECT count(*) FROM @tblName)
DECLARE @count INT = 1
DECLARE @toReturn AS nvarchar(MAX) = ''
WHILE (@count <= @nRows)
BEGIN
DECLARE @column varchar(200) = (SELECT @colName FROM @tblName WHERE @RNumColName = @count1)
SET @toReturn = @toReturn + @column + ','
SET @count = @count + 1
END
RETURN @toReturn
END
После поиска в Интернете я все еще не уверен, как работают пользовательские функции и можно ли добиться того, что я хочу сделать. Можно ли динамически передавать @tblName и можно ли запросить переданную таблицу в моей функции? Прямо сейчас я получаю следующую ошибку при попытке создать эту функцию
«Ошибка разбора в строке: 16, столбец: 45: неправильный синтаксис рядом с« @tblName »."