如何在sql中启动用户过程?
我有一个需要执行的SQL Server函数。但是我试着通过select,exec调用它,它抛出了一个错误。如何修复该bug并启动该功能 程序代码如何在sql中启动用户过程?,sql,sql-server,Sql,Sql Server,我有一个需要执行的SQL Server函数。但是我试着通过select,exec调用它,它抛出了一个错误。如何修复该bug并启动该功能 程序代码 create or alter function mergetext (@TitleOfCourtesy text, @FirstName text, @LastName text) returns varchar(255) as begin return concat(@TitleOfCourtesy, ' '
create or alter function mergetext
(@TitleOfCourtesy text,
@FirstName text,
@LastName text)
returns varchar(255)
as
begin
return concat(@TitleOfCourtesy, ' ', @FirstName, ' ', @LastName)
end
select mergetext('a','b','c')
错误消息
Msg 156,级别15,状态1,程序合并文本,第12行[批处理起始行0]关键字“select”附近的语法不正确 Msg 195,级别15,状态10,程序合并文本,第12行[批处理起始行0]
“mergetext”不是可识别的内置函数名 首先,这不是。这是一个好主意。 其次,该类型已弃用,不应使用。 然后,您需要使用
GO
、在单独的查询窗口中执行或仅选择函数并按F5来分离对象的创建
试试这个:
create or alter function mergetext(
@TitleOfCourtesy text,
@FirstName text,
@LastName text
)
returns varchar(255)
as
begin
return concat(@TitleOfCourtesy,' ',@FirstName,' ',@LastName)
end
GO
select dbo.mergetext('a','b','c')
最后,您为什么要创建
CONCAT
函数的包装器。只要在需要的地方使用CONCAT
。调用SQL Server函数时,需要包含模式。如果在创建函数时未指定模式,则使用默认模式(可能是dbo)创建函数。因此,请尝试调用该函数,以便:
选择dbo.mergetext('a','b','c')
在过程定义后添加GO
。或者将它们作为单独的批次运行。是否确实要添加三个text
值以形成varchar(255)
。ntext
和text
数据类型将在SQL Server的未来版本中删除。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。改用nvarchar(max)
或varchar(max)
。不,它不起作用。此代码抛出Msg 195,级别15,状态10,过程mergetext,第12行[批处理开始行0]“mergetext”不是可识别的内置函数名。error@who_am_i只需像这样指定模式select dbo.mergetext('a','b','c')