我想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) 给定一个存储过程,如下所示:
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) 我有一个在大屏幕上看起来像这样的导航栏菜单:
并在较小的屏幕上折叠到这个:
但是我想在左边有一个菜单按钮,右边有另一个菜单按钮,品牌在中间.像这样:
我不确定这是否可能,如果是的话,诀窍是什么?
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) 我很难理解正确的 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) 我在获取选择查询以返回我需要的数据时遇到麻烦。请参见下面的简化示例。
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,你需要查找的Sku从Sku table得到SkuId(123),然后用SkuId获得的SkuComboIds从(456,789,987) SkuCombo。然后用Sku桌子上的那些拿来对应Sku。以下查询几乎可以将我带到那里,但是我不知道如何Qty从SkuCombo表中获取列?:
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) 我正在将 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) 我正在尝试使用现有表中的值创建临时表.我希望临时表有一个额外的列(电话),永久表中不存在.此列中的所有值都应为NULL.不知道怎么做,但这是我现有的查询:
SELECT DISTINCT UserName, FirstName, LastName INTO ##TempTable
FROM (
SELECT DISTINCT Username, FirstName, LastName
FROM PermanentTable
) data
Run Code Online (Sandbox Code Playgroud) 鉴于下面的示例数据,我需要一个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) 给定以下数据集:
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()?
我有两个对象列表,我需要加入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) 我有以下方法(简称为简称):
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# ×5
sql ×4
linq ×3
sql-server ×3
t-sql ×2
.net ×1
bootstrap-4 ×1
dapper ×1
javascript ×1
jquery ×1
jquery-ui ×1
oracle ×1
sum ×1