0 голосов
спросил от в категории SQL
Использование курсора неэффективно. Просто сделайте это так и получите все недопустимые столбцы в одной строке:
INSERT INTO InvalidValidDataTable (     id,     Col1IsValid,     Col2IsValid,     Col3IsValid,     Col4IsValid,     Col5IsValid ) SELECT        CASE WHEN col1 IS NULL OR LEN(col1) > 10 THEN 0 ELSE 1 END as Col1IsValid,        CASE WHEN col2 IS NULL OR LEN(col2) > 50 THEN 0 ELSE 1 END as Col2IsValid,        CASE WHEN col3 IS NULL OR col3 <= 0      THEN 0 ELSE 1 END as Col3IsValid,        CASE WHEN col4 IS NULL OR LEN(col4) < 1 OR LEN(col4) > 10 THEN 0 ELSE 1 END as Col4IsValid,        CASE WHEN col5 IS NULL OR LEN(col5) > 50 THEN 0 ELSE 1 END as Col5IsValid FROM dbo.mytable


Кроме того, правильно внедренная схема и передняя часть предотвратят внесение некорректных данных в базу данных в первую очередь, и дерьмо, как это, даже не понадобится. Кроме того, если вас беспокоит наличие недопустимых данных в базе данных, обработайте эту возможность в приложении и сделайте соответствующие комментарии в SQL. Еще лучше, напишите некоторый SQL, который восстановит содержимое таблицы и внесут изменения в интерфейс, чтобы это не происходило в будущем.

Наконец, если это домашняя работа назначение, это плохой способ научить кого-то курсорам, потому что это подразумевает, что дизайн схемы может быть запоздалой мыслью, потому что, ну, курсоры! Весь мыслительный процесс поврежден.

Пожалуйста, войдите или зарегистрируйтесь чтобы ответить на этот вопрос.

Категории

Добро пожаловать на сайт DraftingCode Q&A, где вы можете задавать вопросы и получать ответы от других членов сообщества.

Связанных вопросов не найдено

...