我尝试使用位置参数调用内联TVF并且它工作正常:
SELECT MyTable.Col1,
(SELECT TvfColumn FROM ufnGetData(MyTable.Col1, MyTable.Col2)),
MyTable.Col2
FROM MyTable
Run Code Online (Sandbox Code Playgroud)
然后我尝试将参数命名为TVF并且它不解析:
SELECT MyTable.Col1,
(SELECT TvfColumn FROM ufnGetData(@Param1=MyTable.Col1, @Param2=MyTable.Col2)),
MyTable.Col2
FROM MyTable
Run Code Online (Sandbox Code Playgroud)
该函数看起来像:
CREATE FUNCTION dbo.ufnGetData
(
@Param1 INT,
@Param2 INT
)
RETURNS TABLE
AS
RETURN
(
SELECT
blah blah blah AS TvfColumn
)
GO
Run Code Online (Sandbox Code Playgroud)
给出类似于的错误:
消息137,级别15,状态2,行23必须声明标量变量"@Param2".
消息102,级别15,状态1,行24','附近的语法不正确.
我究竟做错了什么?
假设我有一个方法如下:
internal MyClass GetValue(long key)
{
if (_myDictionary.ContainsKey(key))
return _myDictionary[key];
return null; // Not found
}
IDictionary<long,MyClass> _myDictionary=...
Run Code Online (Sandbox Code Playgroud)
但是上面的代码在字典中有两个查找:
是否有更优化的方式来表达这样的函数,因此只执行一次查找,但"未找到"的情况仍然通过空返回处理(即,不通过未找到的异常)?
例如,如果对键的查找返回某种可用于检索值的迭代器或者如果未在C++中找到该值而找到无效迭代器,则会很好.考虑到语言特性,C#可能有更好的方法.
我尝试在SSMS 2014(已应用CU6)中重命名数据库或表,方法是在对象资源管理器中单击并选择数据库或表,然后按F2编辑名称.键盘上的Delete键不会删除光标右侧的字符或任何选中的字符.
这只是我的问题,还是我发现了一个错误?
请考虑以下使用g ++ 7.0.1编译的代码(-std = c ++ 17):
#include <map>
#include <tuple>
int main()
{
// Create an alias for a tuple of three ints
using ThreeTuple=std::tuple<int,int,int>;
// Create an alias for a map of tuple to tuple (of three ints)
using MapThreeTupleToThreeTuple=std::map<ThreeTuple,ThreeTuple>;
MapThreeTupleToThreeTuple m;
// The following does NOT compile
m.emplace({1,2,3},{4,5,6});
// ..., and neither does this
m.emplace(std::piecewise_construct,{1,2,3},{4,5,6});
}
Run Code Online (Sandbox Code Playgroud)
我本以为这些initializer_list参数map::emplace()已经足够了,并且会导致将元组键插入指定的元组值关联.显然,编译器不同意.
当然创建一个元组显式(即,ThreeTuple{1,2,3}而不是只是{1,2,3})并传递它来map::emplace()解决问题,但为什么不能将初始化列表直接传递给map::emplace()哪些会自动将它们转发给元组构造函数?
似乎VS只显示summary元素的内容,但我希望看到更多信息,如detailfor类和value属性.事实上,即使我单击"快速信息"弹出窗口以显示搜索对话框,它仍然只显示摘要,即使有足够的空间可以显示更多内容.
如果我要将XML文档添加到我的类中,我希望看到更多它可以帮助我进行开发.我不想仅仅为了生成(离线,即未集成到VS)文档而添加它.
是否可以启用此功能?
我希望能够做到以下几点:
...
<Grid>
<Grid.Resources>
<Color x:Key="MyColor">#FFEEDD</Color>
<Color x:Key="MyOtherColor">Green</Color>
<!-- Use MyColor and MyOtherColor to define other resources... -->
</Grid.Resources>
</Grid>
Run Code Online (Sandbox Code Playgroud)
不幸的是,我不得不这样做:
...
<Grid>
<Grid.Resources>
<Color x:Key="MyColor" A="255" R="255" G="238" B="221" />
<Color x:Key="MyOtherColor" A="255" R="0" G="128" B="0" />
<!-- Use MyColor and MyOtherColor to define other resources... -->
</Grid.Resources>
</Grid>
Run Code Online (Sandbox Code Playgroud)
因为,似乎价值转换器没有踢.这是臀部的皇家痛苦,我想知道我能做什么,以便我可以象征性地和十六进制值定义我的颜色?
假设您有一个四字节整数,并且希望将其压缩为更少的字节.您可以压缩它,因为较小的值比较大的值更可能(即,值的概率随其大小而减小).您应用以下方案,以产生1,2,3或4字节结果:
注意,在下面的描述中(位是从1开始的,从最高有效位到最低有效位),即第一位指的是最高有效位,第二位指的是下一个最高位,等等......)
这个算法有名字吗?
在SQL Server 2008 R2中使用行级或页级压缩时,SQL Server是否以压缩格式或扩展形式将数据存储到缓冲区缓存中.
例如,假设我有一个(页面级)压缩到原始大小的20%的表:
Original size: 100 GB
Compressed size: 20 GB
Run Code Online (Sandbox Code Playgroud)
此外,运行此特定SQL Server实例的(专用)主机具有24 GB内存.如果查询执行表扫描,查看所有列(为了示例)和SQL Server将数据缓存为压缩,理论上它可以将所有数据放在其缓冲区缓存中,并可供将来查询使用.但是,如果数据是未压缩的缓存,则显然100 GB的数据无法容纳24 GB的服务器内存.
那么,SQL Server如何将压缩数据存储在缓冲区缓存中?
我希望在SQL Server(或其中一个服务)中使用某种机制来推送更改消息(例如,通过UDP,但TCP也可以),当行插入到表中时.我希望这些消息不仅仅是变更通知,而是实际包含已更改的数据.是否有SQL Server 2008 R2附带的机制来执行此操作?我听说过Service Broker和扩展事件,但是我不确定这些工作是否适合这项工作当将实时数据从SQL Server推送到另一个需要在数据时更新其内部状态的应用程序时在SQL Server中更改,无需查询SQL Server(即,我希望数据被严格推出SQL Server).
在最糟糕的情况下,我可以编写SQLCLR代码来单播包含更改的UDP消息,但我想重用现有服务(如果可用).
出发点:
my @array=qw(word1 word2 word3);
Run Code Online (Sandbox Code Playgroud)
现在我想把每个单词放在一个单独的行上:
my @array=qw(
word1
word2
word3
);
Run Code Online (Sandbox Code Playgroud)
现在我想添加评论:
my @array=qw(
word1 # This is word1
word2 # This is word2
word3 # This is word3
);
Run Code Online (Sandbox Code Playgroud)
上述当然不起作用,并使用警告生成警告.
那么,从上面的注释列表中创建数组的最佳方法是什么?