小编Pix*_*aul的帖子

T-SQL根据输入参数的值使用不同的WHERE子句

我想WHERE根据输入参数的值更改查询的子句.我猜这是可能的,但似乎我以错误的方式接近它?

我的SP查询的简化版本:

CREATE PROCEDURE [dbo].[GetMailboxMessagesByStatus]
    @UserId             UNIQUEIDENTIFIER,
    @MessageStatus      INT
AS
BEGIN
    SELECT  * 
    FROM  MailboxMessages m
    WHERE
    CASE @MessageStatus
        WHEN 4 THEN m.SenderId = @UserId    --Sent
        ELSE m.RecipientId = @UserId        --Inbox
    END
END 
GO
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server

4
推荐指数
2
解决办法
7429
查看次数

将存储过程的结果保存到变量

给定一个存储过程,如下所示:

CREATE PROCEDURE [dbo].[GetBusinessUnitSysNameAndGroupNames] 
    @ModelAfter varchar(100),
    @BusinessUnitSystemName varchar(100) OUT,
    @GroupsName varchar(4000) OUT
AS
BEGIN
    if (@ModelAfter = 'Corporate') 
    BEGIN
        SET @GroupsName = 'Admins'
        SET @BusinessUnitSystemName = 'AcmeOutdoors'
    END 
    else if (@ModelAfter = 'Retailers')
    BEGIN
        SET @GroupsName = 'Sellers'
        SET @BusinessUnitSystemName = 'AcmeShoppers'
    END
END
Run Code Online (Sandbox Code Playgroud)

当我从SQL Studio命令行运行时:

EXEC [dbo].[GetBusinessUnitSysNameAndGroupNames] '~ModelAfter~', 'acmeoutdoors', 'admins'
Run Code Online (Sandbox Code Playgroud)

我只是在消息面板中得到一个结果,Command(s) completed successfully.但我希望看到的是实际结果,而不仅仅是成功消息。如下图所示(这不起作用,只是我的想法)。

DECLARE @Result varchar(max)
SET @Result = EXEC [dbo].[GetBusinessUnitSysNameAndGroupNames] '~ModelAfter~', 'acmeoutdoors', 'admins'
PRINT @Result
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

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

左侧和右侧的Bootstrap 4菜单切换按钮,品牌位于中心

我有一个在大屏幕上看起来像这样的导航栏菜单:

在此输入图像描述

并在较小的屏幕上折叠到这个:

在此输入图像描述

但是我想在左边有一个菜单按钮,右边有另一个菜单按钮,品牌在中间.像这样:

在此输入图像描述

我不确定这是否可能,如果是的话,诀窍是什么?

CODE(使用bootstrap 4 beta):

<nav class="navbar navbar-expand-lg navbar-dark bg-primary fixed-top">
  <div class="container">
    <a class="navbar-brand logo-font" href="#">
        Brand
    </a>
    <!-- links toggle -->
    <button class="navbar-toggler ml-auto" type="button" data-toggle="collapse" data-target="#links" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
      <i class="fa fa-bars"></i>
    </button>
    <!-- account toggle --> 
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#account" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
      <i class="fa fa-user"></i>
    </button>

    <div class="collapse navbar-collapse" id="links">
      <ul class="navbar-nav mr-auto">
        <li class="nav-item active">
          <a class="nav-link" href="#">Link 1</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Link 2</a>
        </li>
        <li class="nav-item"> …
Run Code Online (Sandbox Code Playgroud)

twitter-bootstrap bootstrap-4

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

包含 TableValueParameter 的 Dapper 存储过程

我很难理解正确的 Dapper 语法将包含 TableValueParameter(TVP) 和其他参数的参数传递给存储过程。我的代码的简化版本:

班级

public class GalleryViewModel
{
    public string GalleryName { get; set; }
    public string Category { get; set; }
    public IEnumerable<Image> Images { get; set; }
}

public class Image
{
    public string FileName { get; set; }
    public int Order { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

C# 代码段

var param = new DynamicParameters();
param.Add("@Images", model.Images);//TVP
param.Add("@GalleryName", model.GalleryName);
param.Add("@Category", model.Category);

connection.Execute("CreateGallery", param, commandType: CommandType.StoredProcedure);
Run Code Online (Sandbox Code Playgroud)

SQL 片段

--Create table type
CREATE TYPE GalleryImageType AS TABLE   
( 
    FileName …
Run Code Online (Sandbox Code Playgroud)

.net c# sql dapper

2
推荐指数
1
解决办法
1851
查看次数

使用子查询和“ where in”返回多列

我在获取选择查询以返回我需要的数据时遇到麻烦。请参见下面的简化示例。

SKU表

Sku         SkuId
==================
ABC-123     123
DEF-456     456
GHI-789     789
JKL-987     987
Run Code Online (Sandbox Code Playgroud)

SkuCombo表

SkuId       SkuComboId  Qty
===========================
123         456         1
123         789         2
123         987         1
Run Code Online (Sandbox Code Playgroud)

“组合”项目是分配给包含多个项目的项目的SKU号。例如,对于SKU ABC-123,你需要查找的SkuSku table得到SkuId(123),然后用SkuId获得的SkuComboIds从(456,789,987) SkuCombo。然后用Sku桌子上的那些拿来对应Sku。以下查询几乎可以将我带到那里,但是我不知道如何QtySkuCombo表中获取列?:

select * 
from Skus 
where SkuId in (Select SkuComboId 
                from SkuCombo  sc
                join Skus s on s.SkuId = sc.SkuId
                where s.Sku = 'ABC-123')
Run Code Online (Sandbox Code Playgroud)

所需结果

Sku         SkuId       Qty
============================
DEF-456 …
Run Code Online (Sandbox Code Playgroud)

sql oracle

2
推荐指数
1
解决办法
1277
查看次数

jQuery UI 滑块更改“最大”值

我正在将 jQuery UI 滑块用于我正在处理的赌场游戏项目。我需要能够根据玩家当前的资金来更改“最大”值。起初,滑块工作正常,它将“最大”滑块值设置为 1000,玩家开始注资。当 'currentBankroll' 变量发生变化时,滑块的“max”值不会更新。我插入了一个 console.log() 代码行来检查变量 'currentBankroll' 的值,这确认该值正在改变,但滑块的“max”值保持在初始值 1000 并且不会更新。为了进一步混淆我,我尝试了一个解决方案,我在这里找到了更改“max”值的方法。

$('#slider-range-max2').slider("option", "max", 300);
Run Code Online (Sandbox Code Playgroud)

如果我在其中输入一个数字(如 300),这行代码将更改滑块的“最大”值,但如果我使用变量(如“currentBankroll”)则不起作用。如何使用变量更改滑块值?

$(function() {
    console.log("Current Bankroll: " + currentBankroll);
    $("#slider-range-max2").slider({
        range: "max",
        max: 0,
        min: 1,
        max: currentBankroll,
        value: 2,
        slide: function( event, ui ) {
            $("#amount").val( ui.value );
            sliderValue = (ui.value);
        },
        slide : function(event, ui) {
            skillLevelSlots(ui.value);
            wagerAmount = (ui.value);
            $('.wager').html("$" + wagerAmount);
        }
    });
    $('#slider-range-max2').slider("option", "max", 300);
});
Run Code Online (Sandbox Code Playgroud)

javascript jquery jquery-ui

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

将具有NULL值的列添加到临时表

我正在尝试使用现有表中的值创建临时表.我希望临时表有一个额外的列(电话),永久表中不存在.此列中的所有值都应为NULL.不知道怎么做,但这是我现有的查询:

SELECT DISTINCT UserName, FirstName, LastName INTO ##TempTable 
FROM (
      SELECT DISTINCT Username, FirstName, LastName 
          FROM PermanentTable
)  data 
Run Code Online (Sandbox Code Playgroud)

sql sql-server

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

只有当组中的所有项都为"true"时,才会使用linq count group

鉴于下面的示例数据,我需要一个linq查询,它返回所有3个仓库中库存的商品数量.在下面的例子中,它应该返回2,因为只有skus ABC-123并且JKL-789在所有3个仓库都有库存.但我的查询是返回3?

WarehouseId     Sku         InStock
===================================
1               ABC-123     true
2               ABC-123     true
3               ABC-123     true

1               XYZ-789     true
2               XYZ-789     false
3               XYZ-789     true

1               JKL-456     true
2               JKL-456     true
3               JKL-456     true




int inStock = query.Where(x => x.InStock).GroupBy(x => x.Sku).Count();
Run Code Online (Sandbox Code Playgroud)

c# linq

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

LINQ ToArray()有条件的

给定以下数据集:

WharehouseId    Sku     OnHold      InStock 
===========================================
1               ABC-123     N           20
2               ABC-123     N           13
3               ABC-123     Y           4
4               ABC-123     N           18
Run Code Online (Sandbox Code Playgroud)

我需要创建一个int[]返回InStock项目的数组,但值应为0if OnHold等于'Y'.所以在上面的数据集中,数组结果应该是:

{ 20, 13, 0, 18 }
Run Code Online (Sandbox Code Playgroud)

我能够通过以下方式实现这一目标:

int[] inStockQty = new int[4];
int i = 0;

foreach (var item in query)
{
    inStockQty[i] = item.OnHold == 'N' ? item.InStock : 0;
    i++;
}
Run Code Online (Sandbox Code Playgroud)

但我想知道是否还有一种方法可以使用LINQ来做到这一点ToArray()

c# linq

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

Linq查询加入两个对象并计算总和

我有两个对象列表,我需要加入Sku,然后caluclate Sum(Qty*Price).我不确定该怎么做?这是我到目前为止:

List<Order> orders = new List <Order> 
{ 
    new Order() { Sku = "ABC", Qty = 1 },
    new Order() { Sku = "XYZ", Qty = 2}
};

List<Cost> costs = new List <Cost> 
{ 
    new Cost() { Sku = "ABC", Price = 4.50m },
    new Cost() { Sku = "XYZ", Price = 2.25m }
};


var profit = from order in orders
             join cost in costs
             on order.Sku equals cost.Sku
             select …
Run Code Online (Sandbox Code Playgroud)

c# linq sum

0
推荐指数
1
解决办法
657
查看次数

如何在返回类型为Task的方法中尝试捕获?

我有以下方法(简称为简称):

public Task CreateAsync(TUser user)
{
    using (var connection = new SqlConnection(_connection))
    {
        return Task.FromResult(connection.Execute("CreateUser", param, commandType: CommandType.StoredProcedure));
    }
 }
Run Code Online (Sandbox Code Playgroud)

我想合并一个try-catch block,所以我可以记录任何潜在的Sql错误.

public Task CreateAsync(TUser user)
{
     var result = ???; // what is the return type here?
     try
     {
         result = FromResult(connection.Execute("CreateUser", param, commandType: CommandType.StoredProcedure));
      }
      catch(SqlException sqlEx)
      {
          // log error here
       }

      return result;
}
Run Code Online (Sandbox Code Playgroud)

我想我不确定返回类型Task是什么?

c# task-parallel-library

-1
推荐指数
1
解决办法
62
查看次数