У меня хранимая процедура принимает параметр @phonename
, и я хочу узнать свойство телефона из базы данных. После получения свойства из базы данных я хотел бы изменить заголовок столбца "Property"
на имя телефона, которое передается из хранимой процедуры. Например, могу ли я сделать
Select property as @phonename
from property
join phone on property.Phid = phone.Phid
where phoneid = (select phid from phone where name = @phonename)
Что ж, это возможно, хотя и не рекомендуется ...
Вы можете использовать динамический sql:
DECLARE @command varchar(1000)
DECLARE @phonename varchar(100)
SET @phonename = 'Aaron'
SET @command = 'SELECT myColumn AS ' + @phonename + ' FROM myTable WHERE name = ' + @phonename
EXEC (@command)
См .: https://www.mssqltips.com/sqlservertip/1160/execute-dynamic-sql-commands-in-sql-server/
ПРИМЕЧАНИЕ: Если вы планируете использовать что-то подобное в производственной среде, подумайте о возможностях SQL-инъекция. Вы можете быть в большей безопасности, применяя эти изменения имени в коде вашего приложения, а не в SQL.