小编use*_*359的帖子

传递变量mssql时列名无效

我用这段代码遇到了这个奇怪的问题:

DECLARE @dbname nvarchar(128)
SET @dbname = $(databaseName)

IF (EXISTS (SELECT name 
FROM master.dbo.sysdatabases 
WHERE ('[' + name + ']' = @dbname 
OR name = @dbname)))

-- code mine :)
PRINT 'true'
Run Code Online (Sandbox Code Playgroud)

我正在通过命令行传递它:

"C:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe" -U user -P password -i C:\checkDB.sql -v databaseName=newdatabasetest1
Run Code Online (Sandbox Code Playgroud)

当我在这里尝试运行命令时出现此错误:

Msg 207, Level 16, State 1, Server SERVERNAME, Line 2
Invalid column name 'newdatabasetest1'.
Run Code Online (Sandbox Code Playgroud)

如果我更改查询以使用'newdatabasetest1'替换$(databaseName),它将起作用并按预期返回'true'...

我不确定我在这里做错了什么,或者它可能是一个SQL的东西,但似乎只有命令行的问题.我使用相同的传递变量技术来创建和删除一个工作正常的数据库.

任何指导都会有所帮助!

sql-server sql-server-2008 sql-server-2008-r2

5
推荐指数
2
解决办法
2464
查看次数

矢量错误,无法让push_back工作

这只是未注释代码的一小部分.打包向量一直导致错误push_back(),我不太清楚为什么:

编辑:它已更新说

vector<BinTreeNode<HuffmanToken<Pixel>* > > packing = new vector<BinTreeNode<HuffmanToken<Pixel> > >();
Run Code Online (Sandbox Code Playgroud)

但是,即使使用调整后的模板,仍然存在分配器错误.

没有匹配的函数来调用std :: vector,std :: allocator >> :: push_back(BinTreeNode >> &&

BinTree<HuffmanToken<Pixel> >* Huffman::buildTree(const vector<HuffmanToken<Pixel>>& tokens) {

BinTreeNode<HuffmanToken<Pixel> >* g1 = new BinTreeNode<HuffmanToken<Pixel> >();
BinTreeNode<HuffmanToken<Pixel> >* g2 = new BinTreeNode<HuffmanToken<Pixel> >();
BinTreeNode<HuffmanToken<Pixel> >* g3 = new BinTreeNode<HuffmanToken<Pixel> >();

vector<HuffmanToken<Pixel> > packing ;

vector<HuffmanToken<Pixel> >::const_iterator it;

it = tokens.begin();

for(int i = 0; i < tokens.size(); i++) {
  g1 -> setValue(tokens.at(i));
  packing.push_back(g1);
}
Run Code Online (Sandbox Code Playgroud)

c++ stl vector push-back

4
推荐指数
1
解决办法
3万
查看次数