Надеюсь, что элементы были в $ scope.items являются объектами, и вы пытаетесь вставить строку в этот список, чтобы он вставлялся как неопределенный.
Попробуйте поместить эти элементы, как показано ниже, в список, затем вы можете нажать любую строку, которую хотите.
public List yourmethod () {....} // to $ scope.items
Использовать sp_executesql
и встроенное quotename()
. Эта статья, Проклятие и Благословения Динамического SQL, является в значительной степени категорической ссылкой.
Вместо того, чтобы вызывать ДОЛЖНОСТНОЕ ЛИЦО (@somesql), я предлагаю использовать sp_executesql хранимую процедуру. А именно, это позволяет Вам передавать параметры, и система проверит, что параметры допустимы.
По-видимому, существует предел с 128 длинами quotename (), даже в 2008 согласно моему тесту, так как он ожидает идентификатор SQL. Ссылка предлагает создать quotestring () функция, которая делает то же самое как:
REPLACE(@variable,'''','''''')
Поэтому я предлагаю, чтобы ответ создал функцию из ЗАМЕНЫ () выше, как так:
CREATE FUNCTION quotestring(@string nvarchar(MAX))
RETURNS nvarchar(MAX) AS
BEGIN
RETURN(REPLACE(@string,'''',''''''))
END
... Если я не неправильно понял что-то.
Вы могли сначала запросить информацию о схеме с регулярным T-SQL и удостовериться, что имя таблицы существует сначала. Таким образом, если это - уродливый SQL, это не выполнится как код. Это просто будет имя таблицы VARCHAR.
DECLARE @Table AS VARCHAR(MAX)
DECLARE @Exists AS BIT
SET @Table = 'Vicious malformed dynamic SQL'
SELECT @Exists = COUNT(TABLE_NAME)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = @Table
IF (@Exists = 1)
BEGIN
PRINT 'Table exists'
-- Execute dynamic SQL.
END
ELSE
PRINT 'Invalid table'
(Или просто используйте, ЕСЛИ СУЩЕСТВУЕТ (ВЫБОР....)),