Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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 server 创建动态sql to rpelace db前缀时出错,但获取错误消息_Sql Server - Fatal编程技术网

Sql server 创建动态sql to rpelace db前缀时出错,但获取错误消息

Sql 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'

在动态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' 
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前缀,?