Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以执行包含变量的sql语句?_Sql_Sql Server - Fatal编程技术网

是否可以执行包含变量的sql语句?

是否可以执行包含变量的sql语句?,sql,sql-server,Sql,Sql Server,是否可以执行包含变量的sql语句 DECLARE @SCHEMA varchar(40) set @SCHEMA='X_SLF' select * from @SCHEMA..Acc_tblCompany --// anyway to use this type of statement? --below statement works select * from X_SLF..Acc_tblCompany --我不希望执行以下解决方案:

是否可以执行包含变量的sql语句

    DECLARE @SCHEMA varchar(40)

    set @SCHEMA='X_SLF'

   select * from @SCHEMA..Acc_tblCompany  --// anyway to use this type of statement?

   --below statement works 
    select * from X_SLF..Acc_tblCompany
--我不希望执行以下解决方案:

    DECLARE @Sql nvarchar(80)
    set @Sql=' select * from '+@SCHEMA+'..Acc_tblCompany'
    Execute sp_executesql @Sql

也许您可以将其作为案例陈述来实现。这并不是你想要的,但至少你可以给调用者一种错觉,认为它是参数化的wrt模式

我认为这是不可能的。SQL在这方面不是很灵活,因为您的varibale声明为varchar(40),我认为您不能像这样使用它。第二个查询似乎更合适。不,只有当变量作为动态SQL执行时,才可能在from子句中放入变量-这是唯一的方法。因此,“不要”解决方案是唯一可行的解决方案。您不能在SQL语句中参数化对象。请注意,在第一个示例中,您试图提供的是一个字符串,而SQL Server希望在该位置提供的是一个名称。虽然它们看起来很相似,但实际上并不相同。