【问题标题】:SqlParameter calling a user defined function in an Insert QuerySqlParameter 在插入查询中调用用户定义的函数
【发布时间】:2012-08-29 18:51:46
【问题描述】:

我试图在插入查询中执行标量值函数。我正在使用 sql 参数集合,但仍然坚持使用它。

查询

Insert into PackageProducts values (@id, @name, @prodId, @prodCode)

// 当这个查询执行时,我想调用一个标量值函数来获取@prodCode 的值

功能

create function getProdCodeById(@id uniqueidentifier) returns varchar(15)
begin
declare @code varchar(15)
select @code=ProductCode from Products where ID=@id
return @code
end

我想要做什么

//create command, connection etc.. after than

DbParameter param = createParameter() ; // returns an empty parameter
param.Name = "@prodCode";
param.Value = String.Format("getProdCodeById('{0}')", 5);

当我执行时,它将参数值作为字符串..该函数永远不会被执行。你能告诉我我在这里做错了什么吗?

【问题讨论】:

    标签: sql-parametrized-query


    【解决方案1】:

    为您的函数使用 select 语句

    SELECT [dbo].[getProdCodeById] (@id)
    

    您可以在使用它之前将其分配给变量,如

    DECLARE @parameter varchar(15)
    SET @parameter  = (SELECT [dbo].[getProdCodeById] (@id))
    

    您现在可以在代码中的任何位置使用@parameter

    【讨论】:

    • 当我在 sql server 中执行该函数时,它可以工作。但是,当我将函数调用指定为 sql 参数的值时(即使使用 select 关键字),最终查询将其视为只是一个字符串
    • 首先,将函数分配给一个参数,然后您可以将其用作您的参数
    猜你喜欢
    • 2013-12-06
    • 2020-11-25
    • 2011-09-15
    • 2013-11-07
    • 2021-09-30
    • 2017-01-09
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多