Более простой способ - просто сгенерировать SVG в строку, создать HTML-элемент оболочки и вставить строку svg в элемент HTML с помощью $("#wrapperElement").html(svgString)
. Это прекрасно работает в Chrome и Firefox.
Вам нужно сначала поместить CTE, а затем объединить INSERT INTO с оператором select. Кроме того, ключевое слово "AS" после имени CTE не является необязательным:
WITH tab AS (
bla bla
)
INSERT INTO dbo.prf_BatchItemAdditionalAPartyNos (
BatchID,
AccountNo,
APartyNo,
SourceRowID
)
SELECT * FROM tab
Обратите внимание, что код предполагает, что CTE вернет ровно четыре поля и что эти поля совпадают по порядку и типу с полями, указанными в операторе INSERT. Если это не так, просто замените "SELECT *" на конкретную выборку нужных вам полей.
Что касается вашего вопроса об использовании функции, я бы сказал: "Это зависит от ситуации". Если вы помещаете данные в таблицу только из соображений производительности, и скорость приемлема при использовании их через функцию, то я бы рассматривал функцию как вариант. С другой стороны, если вам нужно использовать результат CTE в нескольких различных запросах, и скорость уже является проблемой, я бы выбрал таблицу (либо обычную, либо временную).
Ага:
WITH tab (
bla bla
)
INSERT INTO dbo.prf_BatchItemAdditionalAPartyNos ( BatchID, AccountNo,
APartyNo,
SourceRowID)
SELECT * FROM tab
Обратите внимание, что это для SQL Server, который поддерживает несколько CTE:
WITH x AS (), y AS () INSERT INTO z (a, b, c) SELECT a, b, c FROM y
Teradata допускает только один CTE, а синтаксис как в вашем примере.