Как написать процедуру хранения, чтобы она запускала последний столбец и сохраняла его в таблице? - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть таблица, в которой есть последний столбец кода.Таблица выглядит следующим образом:

Rule_ID Simple_English_Description Source_Attribute Dependent_Attribute Просмотреть текст

39 Описание материала Обязательно для всех типов материалов Описание материала Основные данные

INSERT INTO GDQ_PRODUCT_ERROR_TABLE SELECT '39' as RULE_ID,
 vw.MATNR,VW.REGION_CODE, VW.COUNTRY_CODE,VW.[CLUSTER_CODE],VW.[COMMON_COUNTRY],  
'MATERIAL DESCRIPTION' as SRC_ATTR,VW.MAKTX AS SOURCE_VALUE,' 
AS WERKS,VW.MTART,VW.MAKTX,VW.NUMTP,VW.EAN11,VW.MEINS,VW.MSTAE,VW.PRDHA,
CASE WHEN (vw.MAKTX IS NULL or rtrim(ltrim(vw.MAKTX))=') THEN 'I' 
ELSE 'V' END as DQ_INVALID from T_U2K2_ECC_MAKT_GDQ_ACTIVE vw;

Как написать SP так, чтобы он мог быть цикличным и читать из последнего столбца и давать мне вывод?

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

Я попробовал следующий код:

DECLARE @item CHAR(2)
DECLARE item_cursor CURSOR FAST_FORWARD READ_ONLY FOR
SELECT [text] from GDQ_RULE_MSTR_copy
OPEN item_cursor
FETCH NEXT FROM item_cursor INTO @item
WHILE @@FETCH_STATUS = 0
BEGIN

DECLARE @Query nvarchar(max)
    SET @Query = (N'Select [text] FROM GDQ_RULE_MSTR_copy')

    EXECUTE sp_executesql @Query

FETCH NEXT FROM item_cursor INTO @item

END

CLOSE item_cursor
DEALLOCATE item_cursor

Я попробовал этот код, но здесь он выполняет текстовый столбец, а не внутреннее значение, которое является исходным кодом в строкеФормат, который я сохранил

1 Ответ

0 голосов
/ 26 сентября 2019

Вы помещаете Select [text] FROM GDQ_RULE_MSTR_copy в кавычки N '', которые фактически выполняют сам оператор Select [text] FROM GDQ_RULE_MSTR_copy, когда вы выполняете @Query.Кроме того, ваш курсор помещает значение столбца Text в поле char (2) @item, которое усекает строку до 2 символов.Попробуйте это:

DECLARE @item NVARCHAR(MAX) 
DECLARE item_cursor CURSOR FAST_FORWARD READ_ONLY 
FOR SELECT [text] from GDQ_RULE_MSTR_copy 
OPEN item_cursor


FETCH NEXT FROM item_cursor INTO @item 
WHILE @@FETCH_STATUS = 0 
BEGIN

EXECUTE sp_executesql @Item
FETCH NEXT FROM item_cursor INTO @item

END

CLOSE item_cursor DEALLOCATE item_cursor
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...