SQL определяемая пользователем функция в выборе

Ошибка синтаксиса: ошибка синтаксиса, неожиданный T_ENCAPSED_AND_WHITESPACE

Эта ошибка чаще всего встречается при попытке ссылаться на значение массива с помощью ключевого слова для интерполяции внутри строки с двумя кавычками , когда вся конструкция комплексной переменной не заключена в {}.

Случай ошибки:

Это приведет к Unexpected T_ENCAPSED_AND_WHITESPACE:

echo "This is a double-quoted string with a quoted array key in $array['key']";
//---------------------------------------------------------------------^^^^^

Возможные исправления:

В строке с двойными кавычками PHP разрешает использовать строки ключей ключей без кавычек и не выдаст E_NOTICE. Таким образом, вышесказанное может быть записано как:

echo "This is a double-quoted string with an un-quoted array key in $array[key]";
//------------------------------------------------------------------------^^^^^

Вся сложная переменная массива и ключ (ы) могут быть заключены в {}, и в этом случае они должны быть указаны чтобы избежать E_NOTICE. Документация PHP рекомендует этот синтаксис для сложных переменных.

echo "This is a double-quoted string with a quoted array key in {$array['key']}";
//--------------------------------------------------------------^^^^^^^^^^^^^^^
// Or a complex array property of an object:
echo "This is a a double-quoted string with a complex {$object->property->array['key']}";

Конечно, альтернатива любой из вышеперечисленного заключается в объединении переменной массива in вместо интерполировать его:

echo "This is a double-quoted string with an array variable " . $array['key'] . " concatenated inside.";
//----------------------------------------------------------^^^^^^^^^^^^^^^^^^^^^

Для справки см. раздел «Переменная синтаксический анализ» в странице руководства PHP Strings

56
задан ΩmegaMan 18 March 2015 в 15:10
поделиться

3 ответа

Да, можно сделать почти что:

SELECT dbo.GetBusinessDays(a.opendate,a.closedate) as BusinessDays
FROM account a
WHERE...
96
ответ дан ΩmegaMan 26 November 2019 в 17:18
поделиться

Если это - функция табличного значения (возвращает настольный приемник), Вы просто присоединяетесь к нему как Таблица

, эта функция генерирует таблицу на один столбец со всеми значениями из переданного разделенного запятыми списка

SELECT * FROM dbo.udf_generate_inlist_to_table('1,2,3,4')
10
ответ дан Roman Marusyk 26 November 2019 в 17:18
поделиться

Используйте UDF со скалярным знаком, не табличное значение один, тогда можно использовать его в ВЫБОРЕ, как Вы хотите.

7
ответ дан recursive 26 November 2019 в 17:18
поделиться
Другие вопросы по тегам:

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