Я хочу функцию, которая выбирает только строки из таблицы, которая не является пустой. Моя первая попытка:SELECT Все строки, которые не являются пустым
declare @col varchar(255), @cmd varchar(max);
DECLARE @Select VARCHAR(3000)
DECLARE @Werteneu VARCHAR(3000)
DECLARE @Tablename VARCHAR(3000)
SELECT @Tablename = 'AD'
DECLARE getinfo cursor for
SELECT c.name FROM sys.tables t JOIN sys.columns c ON t.Object_ID = c.Object_ID
WHERE t.Name = @Tablename
SELECT @Werteneu = @Tablename
OPEN getinfo
FETCH NEXT FROM getinfo into @col
WHILE @@FETCH_STATUS = 0
BEGIN
IF EXISTS (SELECT TOP 1 * FROM AD WHERE ' + @col + ' IS NOT NULL) BEGIN
END
FETCH NEXT FROM getinfo into @col
END
CLOSE getinfo
DEALLOCATE getinfo
exec ('select ' + @Werteneu + ' from AD')
Пожалуйста, замените «AD» на свой тестовый стол. Моя проблема в том, что IF EXISTS (SELECT TOP 1 * FROM AD WHERE ' + @col + ' IS NOT NULL) BEGIN
начинаются, хотя строка пуста.
Где функция 'create ', если вы хотите использовать функцию? А функции SQL Server не поддерживают динамический SQL. –
Привет Себастьян. Поскольку вы запрашиваете sys.tables и sys.columns, почему бы вам не рассказать нам о том, чего вы пытаетесь достичь, вероятно, есть сотни примеров рабочих обработок SQL-proc, доступных в Интернете, для большей части того, что вы, вероятно, захотите делать. –
Все это звучит неправильно ... зачем вы хотите возвращать каждую строку из каждой таблицы (не пустой)? Какой у Вас вопрос? Безопасность, похоже, не является частью этого –