小编Mic*_*eyn的帖子

使用命名参数调用内联TVF,正确的语法是什么?

我尝试使用位置参数调用内联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','附近的语法不正确.

我究竟做错了什么?

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

8
推荐指数
1
解决办法
2568
查看次数

用于查找的C#最佳IDictionary用法,可能未找到

假设我有一个方法如下:

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)

但是上面的代码在字典中有两个查找:

  1. 关键的存在的测试
  2. 实际检索的值

是否有更优化的方式来表达这样的函数,因此只执行一次查找,但"未找到"的情况仍然通过空返回处理(即,不通过未找到的异常)?

例如,如果对键的查找返回某种可用于检索值的迭代器或者如果未在C++中找到该值而找到无效迭代器,则会很好.考虑到语言特性,C#可能有更好的方法.

.net c# .net-4.0 c#-4.0

8
推荐指数
1
解决办法
467
查看次数

尝试重命名SSMS中的DB /表时,Delete键是否正常?

我尝试在SSMS 2014(已应用CU6)中重命名数据库或表,方法是在对象资源管理器中单击并选择数据库或表,然后按F2编辑名称.键盘上的Delete键不会删除光标右侧的字符或任何选中的字符.

这只是我的问题,还是我发现了一个错误?

sql-server ssms sql-server-2014 ssms-2014

8
推荐指数
1
解决办法
1487
查看次数

std ::元组到元组和使用emplace的映射

请考虑以下使用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()哪些会自动将它们转发给元组构造函数?

c++ c++17

8
推荐指数
2
解决办法
1528
查看次数

VS是否可以在Intellisense Quick Info弹出窗口中显示更多C#XML文档

似乎VS只显示summary元素的内容,但我希望看到更多信息,如detailfor类和value属性.事实上,即使我单击"快速信息"弹出窗口以显示搜索对话框,它仍然只显示摘要,即使有足够的空间可以显示更多内容.

如果我要将XML文档添加到我的类中,我希望看到更多它可以帮助我进行开发.我不想仅仅为了生成(离线,即未集成到VS)文档而添加它.

是否可以启用此功能?

visual-studio-2010 quickinfo c#-4.0

7
推荐指数
1
解决办法
147
查看次数

将颜色定义为静态资源

我希望能够做到以下几点:

...
<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)

因为,似乎价值转换器没有踢.这是臀部的皇家痛苦,我想知道我能做什么,以便我可以象征性地和十六进制值定义我的颜色?

c# wpf wpf-4.0 c#-4.0

6
推荐指数
1
解决办法
6089
查看次数

这个压缩算法有名称吗?

假设您有一个四字节整数,并且希望将其压缩为更少的字节.您可以压缩它,因为较小的值比较大的值更可能(即,值的概率随其大小而减小).您应用以下方案,以产生1,2,3或4字节结果:

注意,在下面的描述中(位是从1开始的,从最高有效位到最低有效位),即第一位指的是最高有效位,第二位指的是下一个最高位,等等......)

  1. 如果n <128,则将其编码为单个字节,并将第一个位设置为零
  2. 如果n> = 128且n <16,384,则使用两个字节的整数.将第一位设置为1,将第二位设置为零.然后使用剩余的14位对数字n进行编码.
  3. 如果n> 16,384且n <2,097,152,则使用三字节整数.将第一位设置为1,将第二位设置为1,将第三位设置为零.您使用剩余的21位来编码n.
  4. 如果n> 2,097,152且n <268,435,456,则使用四字节整数.将前三位设置为1,将第四位设置为零.您使用剩余的28位来编码n.
  5. 如果n> = 268,435,456且n <4,294,967,296,则使用五字节整数.将前四位设置为1并使用以下32位将n的精确值设置为四字节整数.其余位未使用.

这个算法有名字吗?

compression

6
推荐指数
1
解决办法
497
查看次数

压缩数据如何存储在缓冲区缓存中,压缩或解压缩?

在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 sql-server-2008 sql-server-2008-r2

6
推荐指数
1
解决办法
1164
查看次数

将插入的数据从SQL Server推送到应用程序的最佳方法是什么?

我希望在SQL Server(或其中一个服务)中使用某种机制来推送更改消息(例如,通过UDP,但TCP也可以),当行插入到表中时.我希望这些消息不仅仅是变更通知,而是实际包含已更改的数据.是否有SQL Server 2008 R2附带的机制来执行此操作?我听说过Service Broker和扩展事件,但是我不确定这些工作是否适合这项工作当将实时数据从SQL Server推送到另一个需要在数据时更新其内部状态的应用程序时在SQL Server中更改,无需查询SQL Server(即,我希望数据被严格推出SQL Server).

在最糟糕的情况下,我可以编写SQLCLR代码来单播包含更改的UDP消息,但我想重用现有服务(如果可用).

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

6
推荐指数
1
解决办法
1582
查看次数

为多行引用词添加注释的最佳方法是什么?

出发点:

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)

上述当然不起作用,并使用警告生成警告.

那么,从上面的注释列表中创建数组的最佳方法是什么?

perl

6
推荐指数
1
解决办法
1056
查看次数