Возвратите количество строк, затронутых операторами UPDATE

@ voyager ответ об использовании атрибута data-* (например, data-gender="female|male" - самый эффективный и подход в соответствии со стандартами на 2017 год:

[data-gender='male'] {background-color: #000; color: #ccc;}

). ] можно получить , так как есть некоторые, хотя и ограниченные селекторы, ориентированные вокруг текста. :: first-letter является псевдоэлементом , который может применять ограниченную стилизацию к первой букве. элемента. Существует также псевдоэлемент :: first-line , кроме того, что выбор первой строки элемента (например, абзаца) также подразумевает, что очевидно, что CSS можно использовать для расширения эта существующая возможность стилизовать определенные аспекты textNode.

Пока такая адвокация не будет успешной и не будет реализована следующая лучшая вещь, которую я мог бы предложить, когда это применимо, к словам explode / split, использующим ограничитель пробела, выведите каждое отдельное слово внутри элемента span, а затем, если цель слова / стиля предсказуема, используйте в сочетании с : nth selec tors :

$p = explode(' ',$words);
foreach ($p as $key1 => $value1)
{
 echo ''.$value1.';
}

Остальное , если не предсказуемо , чтобы снова использовать ответ voyager об использовании атрибута data-*. Пример использования PHP:

$p = explode(' ',$words);
foreach ($p as $key1 => $value1)
{
 echo ''.$value1.';
}

83
задан SamWM 9 July 2009 в 11:18
поделиться

3 ответа

CREATE PROCEDURE UpdateTables
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
    DECLARE @RowCount1 INTEGER
    DECLARE @RowCount2 INTEGER
    DECLARE @RowCount3 INTEGER
    DECLARE @RowCount4 INTEGER

    UPDATE Table1 Set Column = 0 WHERE Column IS NULL
    SELECT @RowCount1 = @@ROWCOUNT
    UPDATE Table2 Set Column = 0 WHERE Column IS NULL
    SELECT @RowCount2 = @@ROWCOUNT
    UPDATE Table3 Set Column = 0 WHERE Column IS NULL
    SELECT @RowCount3 = @@ROWCOUNT
    UPDATE Table4 Set Column = 0 WHERE Column IS NULL
    SELECT @RowCount4 = @@ROWCOUNT

    SELECT @RowCount1 AS Table1, @RowCount2 AS Table2, @RowCount3 AS Table3, @RowCount4 AS Table4
END
116
ответ дан 24 November 2019 в 08:52
поделиться

Вам может потребоваться собирать статистику по ходу дела, но @@ ROWCOUNT фиксирует это:

declare @Fish table (
Name varchar(32)
)

insert into @Fish values ('Cod')
insert into @Fish values ('Salmon')
insert into @Fish values ('Butterfish')
update @Fish set Name = 'LurpackFish' where Name = 'Butterfish'
select @@ROWCOUNT  --gives 1

update @Fish set Name = 'Dinner'
select @@ROWCOUNT -- gives 3
13
ответ дан 24 November 2019 в 08:52
поделиться

Это именно то, для чего отлично подходит предложение OUTPUT в SQL Server 2005 и более поздних версиях.

ПРИМЕР

CREATE TABLE [dbo].[test_table](
    [LockId] [int] IDENTITY(1,1) NOT NULL,
    [StartTime] [datetime] NULL,
    [EndTime] [datetime] NULL,
PRIMARY KEY CLUSTERED 
(
    [LockId] ASC
) ON [PRIMARY]
) ON [PRIMARY]

INSERT INTO test_table(StartTime, EndTime)
VALUES('2009 JUL 07','2009 JUL 07')
INSERT INTO test_table(StartTime, EndTime)
VALUES('2009 JUL 08','2009 JUL 08')
INSERT INTO test_table(StartTime, EndTime)
VALUES('2009 JUL 09','2009 JUL 09')
INSERT INTO test_table(StartTime, EndTime)
VALUES('2009 JUL 10','2009 JUL 10')
INSERT INTO test_table(StartTime, EndTime)
VALUES('2009 JUL 11','2009 JUL 11')
INSERT INTO test_table(StartTime, EndTime)
VALUES('2009 JUL 12','2009 JUL 12')
INSERT INTO test_table(StartTime, EndTime)
VALUES('2009 JUL 13','2009 JUL 13')

UPDATE test_table
    SET StartTime = '2011 JUL 01'
    OUTPUT INSERTED.* -- INSERTED reflect the value after the UPDATE, INSERT, or MERGE statement is completed 
WHERE
    StartTime > '2009 JUL 09'

Результатов будет возвращаться следующее

    LockId StartTime                EndTime
-------------------------------------------------------
4      2011-07-01 00:00:00.000  2009-07-10 00:00:00.000
5      2011-07-01 00:00:00.000  2009-07-11 00:00:00.000
6      2011-07-01 00:00:00.000  2009-07-12 00:00:00.000
7      2011-07-01 00:00:00.000  2009-07-13 00:00:00.000

В вашем конкретный случай, поскольку вы не можете использовать агрегатные функции с OUTPUT , вам необходимо зафиксировать вывод INSERTED. * в табличной переменной или временной таблице и подсчитать записи. Например,

DECLARE @temp TABLE (
  [LockId] [int],
  [StartTime] [datetime] NULL,
  [EndTime] [datetime] NULL 
)

UPDATE test_table
    SET StartTime = '2011 JUL 01'
    OUTPUT INSERTED.* INTO @temp
WHERE
    StartTime > '2009 JUL 09'


-- now get the count of affected records
SELECT COUNT(*) FROM @temp
17
ответ дан 24 November 2019 в 08:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: