Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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_Sql Server 2008 - Fatal编程技术网

Sql 如何将变量/参数作为数据类型传递?

Sql 如何将变量/参数作为数据类型传递?,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我希望能够将我的数据类型和其他值作为变量或参数进行更改,以便可以轻松地进行更改和传递 declare @datatype nvarchar(20) = 'datetime' declare @inputvalue nvarchar(20) = '2015-10-21' declare @variable @datatype = @inputvalue exec spStoredProcedure @StoredProcedureParam = @variable 您需要在存储过程中为其使用动态

我希望能够将我的数据类型和其他值作为变量或参数进行更改,以便可以轻松地进行更改和传递

declare @datatype nvarchar(20) = 'datetime'
declare @inputvalue nvarchar(20) = '2015-10-21'
declare @variable @datatype = @inputvalue
exec spStoredProcedure @StoredProcedureParam = @variable

您需要在存储过程中为其使用动态sql,例如

declare @datatype nvarchar(20) = 'datetime'
declare @inputvalue nvarchar(20) = '2015-10-21'


    -- Inside your proc you would do something like.....

Declare @Sql NVARCHAR(MAX);

SET @Sql = N' Declare @variable '+ QUOTENAME(@datatype) + N' = @inputvalue '
         + N' Select @variable AS VariableValue'

Exec sp_executesql @Sql
                 ,N'@inputvalue nvarchar(20)'
                 ,@inputvalue

您需要在存储过程中为其使用动态sql,例如

declare @datatype nvarchar(20) = 'datetime'
declare @inputvalue nvarchar(20) = '2015-10-21'


    -- Inside your proc you would do something like.....

Declare @Sql NVARCHAR(MAX);

SET @Sql = N' Declare @variable '+ QUOTENAME(@datatype) + N' = @inputvalue '
         + N' Select @variable AS VariableValue'

Exec sp_executesql @Sql
                 ,N'@inputvalue nvarchar(20)'
                 ,@inputvalue

你不能那样做。数据类型是在计划查询时确定的,因此不能根据发送到查询中的数据更改数据类型。要动态创建变量,查询需要动态创建查询并执行它。这看起来像是一个XY问题,也就是说,你可能应该询问你想要完成什么,而不是询问你认为它有什么解决方案。这里有一种可能有用的类型。你不能这样做。数据类型是在计划查询时确定的,因此不能根据发送到查询中的数据更改数据类型。要动态创建变量,查询需要动态创建查询并执行它。这看起来像是一个XY问题,也就是说,你可能应该询问你想要完成什么,而不是询问你认为它有什么解决方案。这里有一种可能有用的类型。非常感谢!这正是我想要的答案,我不知道为什么我会被指控问XY问题。非常感谢!这正是我想要的答案,我不知道为什么我甚至被指控问XY问题。