Недопустимое имя столбца — объявление переменной

#variables #reporting-services

#переменные #Службы отчетов

Вопрос:

Я использую хранимую процедуру с моим отчетом SSRS, используя @salesperson в качестве параметра в SSRS. SQL Server Enterprise. Ver 15.0

Я создаю временную таблицу в сохраненной процедуре, затем я использую временную таблицу с остальной частью моего запроса. Я пытаюсь запустить сохраненный процесс в SSMS перед тем, как вводить его в SSRS, но при запуске я получаю ошибку НЕДОПУСТИМОГО столбца. Если я объявлю @SalesPerson = null, он будет запущен, поэтому я считаю, что я делаю что-то не так с этой строкой кода.

Я хочу установить для моей переменной @SalesPerson несколько имен продавцов для тестирования, но я не могу заставить работать даже одно имя продавца.

РЕДАКТИРОВАТЬ: я могу сказать, что моя переменная @SalesPerson объявлена и УСТАНОВЛЕНА правильно, поэтому это связано с тем, как она взаимодействует с исполняемым @InsertSales .

Спасибо за любую помощь, Брент

 declare @SalesPerson        varchar (255);
Set @SalesPerson = 'smith';
-- Select @SalesPerson;
         
IF OBJECT_ID('tempdb..#p_traders') IS NOT null DROP TABLE #p_sales

CREATE TABLE #p_sales(lastname varchar(255));

DECLARE @InsertSales varchar(max) = 'insert into #p_sales
  values (' REPLACE(@SalesPerson,',','),(') ');';
EXEC (@InsertSales);
 

Комментарии:

1. Что это за база данных и версия?

2. Извините, SQL Server. SQL Server Enterprise. Ver 15.0

Ответ №1:

Вы можете использовать встроенную функцию string_split для упрощения работы

 DECLARE @SalesPerson as varchar(max) = 'Smith, Jones'

DROP TABLE IF EXISTS #p_sales

SELECT ltrim(rtrim(value)) as lastname
INTO #p_sales
from string_split(@SalesPerson, ',')

SELECT * FROM #p_sales
 

Дает следующее

введите описание изображения здесь

Комментарии:

1. Привет, да, я работал с string_split , но я получаю указания использовать временную таблицу, как это делает остальная часть сохраненной процедуры. Но, спасибо.

2. При этом используется временная таблица

3. Извините, только что видел это. Я скопировал и запустил код, и я получаю недопустимое имя объекта для string_split

4. Вы используете SQL Sever 2019, да? С этим все должно работать нормально. Я только что протестировал это, и все сработало нормально. Можете ли вы запустить точный фрагмент кода mas в моем ответе и убедиться, что это работает.

5. И проверьте уровень совместимости базы данных