小编Lar*_*ady的帖子

在Sproc中多次使用UDF

我有一个SQL 2k5 sproc我正在使用.

我需要引用一个UDF来根据一些变量和用户权限来计算价格.我最初尝试过这个,但它没有用,因为我没有引用一个字段......

SELECT dbo.f_GetPrice(model,userid,authType) 'YourPrice', name, description 
FROM tblRL_Products
WHERE 'YourPrice' Between @fromPrice AND @toPrice
     OR 'YourPrice' IS NULL
Run Code Online (Sandbox Code Playgroud)

所以我修改了这个

SELECT dbo.f_GetPrice(model,userid,authType) 'YourPrice', name, description 
FROM tblRL_Products
WHERE dbo.f_GetPrice(model,userid,authType) Between @fromPrice AND @toPrice
     OR dbo.f_GetPrice(model,userid,authType) IS NULL
Run Code Online (Sandbox Code Playgroud)

当SQL执行此sproc时,它是为每条记录运行3X的函数还是一次运行它并使用每行其他两个位置的值.

有更有效的方法吗?


编辑

这是Scalar UDF.它需要根据用户授权的类型获取价格,然后一旦我们有合适的价格,我们就需要对其进行计算.这全部存储在授权表中.每个用户都拥有每个产品系列的授权.因此,他们可能对每一行有不同的价格类型和计算,在一次搜索结果调用中返回几十甚至几百行.

在上面的代码中我使用了authType,这是一个旧的调用,我们不再使用该参数了.

ALTER function [dbo].[f_GetPrice]
(
    @model uniqueidentifier,
    @userID uniqueidentifier    
)
returns money
as
begin

Declare @yourPrice money

WITH ProductPrice AS(
SELECT (CASE PriceType
        WHEN 'msrp' THEN p.price_msrp
            WHEN 'jobber' THEN p.price_jobber
            WHEN 'warehouse' THEN p.price_warehouse
            WHEN …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server-2005 user-defined-functions

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

在 Azure DevOps 中,我无法将用户添加到我的团队

我们有一个 DevOps 项目,已经使用一年多了,我们需要向团队添加一名新开发人员。我能够将用户添加到组织中,他回复了邀请,并且我已将他添加到贡献者组中。

添加他后,我转到我的项目并打开该项目的团队设置。当我单击“添加”并尝试查找他的名字时,我收到一个旋转的状态图形和“正在加载...”,但它找不到用户。它不会给我错误或“未找到结果”。最终它会重置回来,就像我第一次登陆该页面一样。

Azure 错误:将用户添加到团队

我认为这可能是权限问题,因此我删除了组中的现有用户。删除后我尝试重新添加用户但不能。我得到相同的结果。我知道该用户正在使用该项目,并且有权获取代码并签入更改。所以对于原来的新用户来说似乎不是问题。

我的下一步是尝试使用 Azure CLI 来执行此操作,但事实证明 CLI 目前不支持将用户添加到项目,目前仅支持将用户添加到组织。我还搜索了这个特定的错误,但找不到其他人遇到这个问题。

azure-devops azure-repos

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

SQL索引 - 这是重叠吗?

我正在浏览并删除SQL数据库中的重复和冗余索引.

所以,如果我有两个相同的索引,我删除.

如果我有重叠的索引,我删除,例如......

  • 指数1:品牌,型号
  • 指数2:品牌,型号,价格

我删除索引1.

那些索引的顺序相同但是有额外的字段呢?

  • 指数1:品牌,型号
  • 指数2:品牌,价格,型号

我可以安全地删除索引1吗?

我的猜测不是,但我不确定

sql sql-server indexing

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

传入一大串Guid

我有一个有两个问题的存储过程。

  1. 它有 40 个参数。我知道第一条评论是重新设计我的存储过程,使其没有 40 个参数。然而,这是一个带有大标准部分的搜索表单。因此,用户最多可以指定 40 个不同的搜索条件。然后我们将这些值作为参数传递。现在我有一个 40 个参数的存储过程。将它们作为 XML 参数传递并在内部或表参数中解析它是否会更有效(我们仍在运行 SQL 2k5,但正在考虑升级到 2k12)。

  2. 我的三个参数是由引号和逗号分隔的 Guid 值的长字符串。基本上,用户会看到一个产品线列表,有时有数百个。然后他们单击想要搜索的内容。我们限制了他们可以检查的行数,只是因为字符串太长,但我们传递了一长串由引号和逗号分隔的 Guid。我知道这不是正确的方法。用于传递像这样的 Guid 值的数组或集合的标准 Trans SQl 模式是什么?40 个领域中,我有 3 个独立领域在做这件事。我们希望更有效地做到这一点,并且能够传递超出当前限制的内容。

sql t-sql sql-server sql-server-2005 query-optimization

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