Установите переменную prevClick
, затем обновите и проверьте ее:
var prevClick = false;
function buttonOnClick() {
if (prevClick) {
window.open('https://www.youtube.com/channel/UCXE6pw29K2lHS_2fB8LeU1Q?sub_confirmation=1','_blank');
setTimeout(aTagChange, 12000);
} else {
prevClick = true;
}
}
Да, я бы определенно посмотрел на Табличные значения параметров для этого. Дополнительным преимуществом может быть то, что вы можете использовать красивую, чистую реализацию на основе набора для внутренних функций вашей процедуры напрямую, без какого-либо массива данных.
Вот еще одна ссылка ...
Вот довольно быстрый метод разделения строк с использованием только T-SQL, а входным параметром является только строка. Вам необходимо иметь таблицу и функцию (как описано ниже), уже настроенную для использования этого метода.
создать эту таблицу:
CREATE TABLE Numbers (Number int not null primary key identity(1,1))
DECLARE @n int
SET @n=1
SET IDENTITY_INSERT Numbers ON
WHILE @N<=8000
BEGIN
INSERT INTO Numbers (Number) values (@n)
SET @n=@n+1
END
SET IDENTITY_INSERT Numbers OFF
создать эту функцию для разделения массива строк (у меня есть другие версии, где пустые разделы исключены и те, которые не возвращают номера строк):
CREATE FUNCTION [dbo].[FN_ListAllToNumberTable]
(
@SplitOn char(1) --REQUIRED, the character to split the @List string on
,@List varchar(8000) --REQUIRED, the list to split apart
)
RETURNS
@ParsedList table
(
RowNumber int --REQUIRED, the list to split apart
,ListValue varchar(500) --OPTIONAL, the character to split the @List string on, defaults to a comma ","
)
AS
BEGIN
--this will return empty rows, and row numbers
INSERT INTO @ParsedList
(RowNumber,ListValue)
SELECT
ROW_NUMBER() OVER(ORDER BY number) AS RowNumber
,LTRIM(RTRIM(SUBSTRING(ListValue, number+1, CHARINDEX(@SplitOn, ListValue, number+1)-number - 1))) AS ListValue
FROM (
SELECT @SplitOn + @List + @SplitOn AS ListValue
) AS InnerQuery
INNER JOIN Numbers n ON n.Number < LEN(InnerQuery.ListValue)
WHERE SUBSTRING(ListValue, number, 1) = @SplitOn
RETURN
END
go
вот пример того, как разделить параметр на части:
CREATE PROCEDURE TestPass
(
@ArrayOfInts varchar(255) --pipe "|" separated list of IDs
)
AS
SET NOCOUNT ON
DECLARE @TableIDs TABLE (RowNumber int, IDValue int null)
INSERT INTO @TableIDs (RowNumber, IDValue) SELECT RowNumber,CASE WHEN LEN(ListValue)<1 then NULL ELSE ListValue END FROM dbo.FN_ListAllToNumberTable('|',@ArrayOfInts)
SELECT * FROM @TableIDs
go
это основано на: http://www.sommarskog.se/arrays-in -sql.html