SQL服务器 - 通过服务器和数据库存储过程
问题描述:
(对不起问题的业余性质)SQL服务器 - 通过服务器和数据库存储过程
我试图将服务器名和数据库名称传递到存储过程,做一些记录如下
exec [dbo].[Logger]
@Server = @@servername,
@Database = db_name(db_id()),
@Task = 'Some task';
,但我不断收到此错误 -
消息102,级别15,状态1,行10
附近有语法错误DB_ID“。
我已经得到这个工作使用declare @dbname varchar(255) = db_name(db_id());
在顶部,然后使用它。但它似乎是一个不必要的变量。
感谢
答
试试这个:
declare @servername varchar(100) = @@servername
declare @dbname = db_name(db_id())
exec [dbo].[Logger]
@Server = @servername,
@Database = @dbname,
@Task = 'Some task'
DB_NAME返回NVARCHAR(128)不为varchar(255) – 2013-05-10 16:54:18
这额外的变量** **是确实是必要的,因为你**不能**使用功能在存储过程执行调用中 - 您需要具有变量和/或文字所需的所有值 – 2013-05-10 16:54:34
重复的:http://stackoverflow.com/questions/5967035/using-function-as-a-parameter-when-executing- a-stored-procedure – 2013-05-10 16:55:48