Мы можем записать функцию sub или процедуру в другой хранимой процедуре

Попробуйте это

const addButton = document.querySelector("#addToDo");
const list = document.querySelector(".list");

addButton.addEventListener("click", addTask, false);
list.addEventListener("click", delTask, true);

function addTask() {
    const textToDo = document.querySelector("#toDo").value;
    var list = document.querySelector(".list");

    var divToDo = document.createElement("div");
    var p = document.createElement("p");
    var delButton = document.createElement("button");

    divToDo.setAttribute("class", "toDo");
    delButton.setAttribute("id", "delToDo");

    delButton.textContent = "Delete";
    p.textContent = textToDo;


    divToDo.appendChild(p)
    divToDo.appendChild(delButton);

    list.appendChild(divToDo);
}

function delTask(event) {
    const target = event.target;
    
    if (target.nodeName === 'BUTTON') {
        target.parentNode.remove();
    }
}

Do homework

Do smth

Некоторые наблюдения, потому что вы добавляете новые узлы в DOM, вам нужно использовать стратегию делегирования событий, чтобы сделать новые элементы доступными через события. Вы можете прочитать в этой статье о теме http://javascript.info/event-delegation , если вы предпочитаете видео, курс https://javascript30.com/ 15-го числа. с названием LocalStorage и Event Delegation объясняет предмет очень ясно

19
задан Paolo Forgia 26 February 2019 в 11:12
поделиться

6 ответов

Я не рекомендую делать это как каждый раз, когда это создается должен быть вычислен, новый план выполнения, но ДА, это определенно может быть сделано (Все возможно, но не всегда рекомендуемое).

Вот пример:

CREATE PROC [dbo].[sp_helloworld]
AS
BEGIN
    SELECT 'Hello World'
    DECLARE @sSQL VARCHAR(1000)
    SET @sSQL = 'CREATE PROC [dbo].[sp_helloworld2]
            AS
            BEGIN
                SELECT ''Hello World 2''
            END'
    EXEC (@sSQL)

    EXEC [sp_helloworld2];
    DROP PROC [sp_helloworld2];
END

Вы получите предупреждение

The module 'sp_helloworld' depends on the missing object 'sp_helloworld2'.
The module will still be created; however, it cannot run successfully until
the object exists.

, можно обойти это предупреждение при помощи ДОЛЖНОСТНОГО ЛИЦА ('sp_helloworld2') выше.

, Но если Вы называете ДОЛЖНОСТНОЕ ЛИЦО [sp_helloworld] Вами, получит результаты

Hello World
Hello World 2
5
ответ дан 30 November 2019 в 04:16
поделиться

Это не имеет той функции. Трудно видеть, какую реальную выгоду такая функция обеспечила бы кроме остановки кода во вложенном SPROC от того, чтобы быть названным откуда-либо.

4
ответ дан 30 November 2019 в 04:16
поделиться

МН Oracle / SQL является чем-то вроде особого случая, будучи языком в большой степени на основе Ada, а не простого DML с некоторыми процедурными конструкциями, соединенными болтом на. Думаете ли Вы, что это - хорошая идея, вероятно, зависит от Вашего аппетита к процессуальному кодексу в Вашем DBMS и Вашей симпатии за изучение сложных новых языков.

идея подпрограммы, для сокращения дублирования или иначе, является в основном внешней на другие платформы базы данных, по моему опыту (Oracle, MS SQL, Sybase, MySQL, SQLite в основном).

, В то время как создание SQL proc работало бы, я думаю John's прямо в предложении, чтобы Вы не использовали его иначе корректный ответ!

Вы не говорите, что формируется, Ваши повторные строки берут, таким образом, я предложу три потенциальных альтернативы, начиная с самого простого:

  1. ничего Не Делают. Признайте, что процедурный SQL является языком примитива, испытывающим недостаток в таком количестве "существенных" конструкций, что Вы не использовали бы его вообще, если бы это не была единственная опция.

  2. Перемещение Ваши процедурные операции за пределами DBMS и выполняют их в коде, написанном на более сложном языке. Рассмотрите пути, которыми Ваша архитектура могла быть скорректирована для извлечения бизнес-логики из платформы хранения данных (эй, почему бы не перепроектировать все это!)

  3. , Если повторение происходит в DML, ВЫБИРАЕТ, в частности, полагайте, что представления представления сокращают запросы.

  4. Пишут код для генерации, как часть процесса сборки, хранимых процедур. Тот путь, если повторные строки когда-нибудь должны изменяться, можно изменить их в одном месте и автоматически генерировать повторение.

Это четыре . Я думал о другом, поскольку я вводил; считайте это премией.

4
ответ дан 30 November 2019 в 04:16
поделиться

sp_helloworld John's действительно работает, но здесь является причиной, почему Вы не видите сделанный чаще.

существует очень большое влияние производительности, когда хранимая процедура компилируется. Существует статья Microsoft о поиске и устранении неисправностей проблем производительности, вызванных большим количеством, перекомпилировал, потому что это действительно замедляет Вашу систему вполне немного:

http://support.microsoft.com/kb/243586

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

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

3
ответ дан 30 November 2019 в 04:16
поделиться

Я соглашаюсь с andynormancx, что, кажется, нет большого количества точки в выполнении этого.

, Если Вы действительно хотите, чтобы общий код содержался в SP затем, Вы могли бы, вероятно, мостить что-то вместе с GOTO или динамический SQL, но выполнение его правильно с отдельным SP или UDF будет лучше почти каждым способом.

1
ответ дан 30 November 2019 в 04:16
поделиться

Спасибо всем за Ваши ответы! Я более обеспечен затем создание еще одного SP с повторяющимся кодом и называю это, которое является лучшим способом интерны производительности, и выглядите мудрыми.

0
ответ дан 30 November 2019 в 04:16
поделиться
Другие вопросы по тегам:

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