Как уже отмечали другие, вы пытаетесь разместить несколько столбцов / полей в одном столбце / поле.
@ ID - это один столбец.«Select *», по-видимому, возвращает более одного столбца, иначе это не сильно поможет!
Чтобы изменить это и заставить его работать так, как вы пытаетесь здесь, вам нужно объединить столбцыВы пытаетесь вернуться.Это почти наверняка не лучший способ для достижения этой цели, но иногда хорошо подходит объединение имен (например).
Другая проблема, с которой вы можете столкнуться, - это даже если вы изменили это на «Выбрать идентификатор», но все еще имеетеошибки могут быть вызваны тем, что запрос возвращает более одной строки, соответствующей этому критерию.Вы можете обойти эту проблему (это обходится большую часть времени), ограничив число строк, возвращаемых с помощью «TOP 1».Но будьте осторожны, так как это может не вернуть информацию, которую вы хотите.Вы можете использовать оператор order by, чтобы убедиться, что это правильная информация (например, order by Time_entered).
Приведенный ниже код с «TOP 1» и объединением нескольких столбцов (и приведением к типу одного типа) будетвсегда работайте.
Опять же, это не лучшие практики и не должны использоваться для очистки данных в процессе производства ... но это действительно показывает вам, почему вы получаете эти ошибки и как их предотвратить.
CREATE FUNCTION deneme(
@ID int
)
RETURNS nvarchar(max)
AS
BEGIN
DECLARE @value nvarchar(max)
SET @value = (
SELECT TOP 1 cast(First_name as nvarchar) + N' ' + cast(Last_name as nvarchar) FROM information
WHERE @ID = Person_id
Order by Time_entered desc
)
RETURN @value
END