Последний опубликованный вами запрос также не является динамическим, поэтому я не уверен, почему вы используете EXEC
. Как я уже упоминал в комментариях, поэтому это так же просто, как использовать SET
:
DECLARE @PropertyPK uniqueidentifier; --SP parameter
DECLARE @JSON nvarchar(MAX);
SET @JSON = (SELECT *
FROM Contacts
WHERE PropertyPK = @PropertyPK
FOR JSON PATH, INCLUDE_NULL_VALUES);
Нет необходимости приводить @PropertyPK
как varchar
к динамическому оператору SQL; просто используйте правильный параметризованный SQL.
Это основано на догадках и последнем (но явно неполном) вопросе ОП. Если это не правильно, это должно привести вас к правильному пути, однако, из-за того, что информация потечет, затруднительно ответить на вопрос.
DECLARE @PropertyPK uniqueidentifier,
@SearchTerm varchar(50),
@Limit int,
@Offset int,
@SortBy sysname, --objects have the data type sysname, aka nvarchar(128)
@SortOrder nvarchar(4); --Guess datatype as it was missing in your sample
DECLARE @JSON nvarchar(MAX);
DECLARE @SQL nvarchar(MAX);
SET @SQL = N'SET @JSON = (SELECT {Columns}' + NCHAR(10) + --Replace {Columns} with an actual list of the required columns (NOT *)
N' FROM dbo.Contacts' + NCHAR(10) +
N' WHERE Address LIKE @Search' + NCHAR(10) +
N' AND PropertyPK = @PropertyPK' + NCHAR(10) + --I ASSUME that WHERE is still needed
N' ORDER BY ' + QUOTENAME(@SortBy) + N' ' + CASE @SortOrder WHEN N'ASC' THEN N'ASC' WHEN N'DESC' THEN 'DESC' END + NCHAR(10) + --The CASE stops invalid sort orders
N' OFFSET @Offset FEETCH NEXT @Limit ROWS ONLY' + NCHAR(10) +
N' FOR JSON PATH, INCLUDE_NULL_VALUES);';
PRINT @SQL; --Your best friend
EXEC sp_executesql @SQL,
N'@JSON nvarchar(MAX) OUTPUT, @Search varchar(50), @PropertyPK uniqueidentifier, @Offset int, @Limit int',
@JSON = @JSON OUTPUT,
@Search = @SearchTerm,
@PropertyPK = @PropertyPK,
@Offset = @Offset,
@Limit = @Limit;
Одна из самых важных вещей, которую вы должны здесь отметить, это то, что я сделал SQL БЕЗОПАСНЫМ . Ваш SQL был широко открыт для внедрения SQL, что является огромным недостатком безопасности. Если вы не знаете / не понимаете SQL-инъекцию, я предлагаю прочитать об этом сейчас. SQL, как у вас выше, - это огромная проблема, а конкатенация необработанных строк - ужасная идея, ожидающая своего использования.
var elements = document.getElementsByTagName("input");
for (var ii=0; ii < elements.length; ii++) {
if (elements[ii].type == "text") {
elements[ii].value = "";
}
}
var fields = document.getElementsByTagName('input'),
length = fields.length;
while (length--) {
if (fields[length].type === 'text') { fields[length].value = ''; }
}
В то время как не простое решение, изучите jQuery. Необходимо смочь сделать что-то как:
$("input[type=text]").val('');
Я не эксперт jQuery, все же.
Я думаю
$("input:text").val("");
Должен работать с jQuery.
Это должно сделать работу
var inputElements = document.getElementsByTagName("input");
for (var i=0; i < inputElements.length; i++) {
if (inputElements[i].type == 'text') {
inputElements[i].value = '';
}
}
Если все Вы, поля запустили пробел, который можно назвать методом сброса формы:
document.forms[0].reset()
(существуют обычно более изящные способы получить дескриптор формы в зависимости от Вашего конкретного случая).