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问题。