Sql server 创建动态sql to rpelace db前缀时出错,但获取错误消息
在动态sql中将字符串(12\11\2013格式)转换为日期时间(YYYY-MM-DD格式)时遇到问题 您可以在下面看到相关示例和结果: 声明@dbPrefix varchar(2), @cob varchar(20), @Sql varchar(200) 声明@m_cobmusone datetimeSql server 创建动态sql to rpelace db前缀时出错,但获取错误消息,sql-server,Sql Server,在动态sql中将字符串(12\11\2013格式)转换为日期时间(YYYY-MM-DD格式)时遇到问题 您可以在下面看到相关示例和结果: 声明@dbPrefix varchar(2), @cob varchar(20), @Sql varchar(200) 声明@m_cobmusone datetime @m_cobEOM varchar(20), @m_cobEOY varchar(20), @m_cobFUN varchar(20) set @cob = '12/11/2013'
@m_cobEOM varchar(20),
@m_cobEOY varchar(20),
@m_cobFUN varchar(20)
set @cob = '12/11/2013'
set @dbPrefix='q_'
set @m_cobMinusOne = convert(varchar(20),@m_cobMinusOne,103)
set @m_cobEOM = convert(varchar(20),@m_cobMinusOne,103)
exec(N'select ' + @m_cobMinusOne + '= bdh_prev_bus_d ,' + @m_cobEOM + '= bdh_prev_mo_end_d
from ' +@dbPrefix+'dbbdm005..bdh_bus_date_ref where bdh_bus_d = ''' + @cob + '''')
看看这里,你可以这样做
declare
@dbPrefix varchar(2),
@cob varchar(20) ,
@m_cobMinusOne datetime,
@m_cobEOM varchar(20),
@SqlQuery NVARCHAR(MAX);
set @cob = '20131211';
set @dbPrefix = 'q_';
set @m_cobMinusOne = convert(varchar(20),@m_cobMinusOne,103);
set @m_cobEOM = convert(varchar(20),@m_cobMinusOne,103);
SET @SqlQuery = N'select @m_cobMinusOne = bdh_prev_bus_d , @m_cobEOM = bdh_prev_mo_end_d ' +
N'from ' + QUOTENAME(@dbPrefix+'dbbdm005') +'..bdh_bus_date_ref ' +
N'where bdh_bus_d = @cob';
EXECUTE sp_executesql @SqlQuery
,N'@m_cobMinusOne VARCHAR(20) OUTPUT, @m_cobEOM VARCHAR(20) OUTPUT, @cob VARCHAR(20)'
,@m_cobMinusOne OUTPUT
,@m_cobEOM OUTPUT
,@cob
“设置m_cobmusone=convert(varchar(20),m_cobmusone,103)”??m_COBMUSONE是一个datetime,为什么要将varchar设置为datetime?提示将exec(“…”)更改为print(“…”)看看它将尝试执行什么操作。@m_COBMUSONE也将始终为null,它是用来转换@cob的吗?是的,你是对的,它不会显示任何结果,并接受null值,请重复,如何在insert in中使用相同的概念来选择*Hi Ali,在表中,bdh_prev_bus_d的值采用日期时间格式,如“2013-12-11”,这会产生任何问题吗?如果是datetime列,则应使用datetime变量,一旦在datetime变量中获得该值,然后按您喜欢的方式进行格式化,但是您不能为datetime列返回的varchar变量赋值好的,我如何检查它返回的值是否正确?阿里,你好,谢谢,我在将所有@cob@COBMUSONE更改为datetime后运行了查询,它运行得很好。但是我如何检查它返回的值是否正确显示我可以在inster查询中使用此db前缀,?