小编use*_*605的帖子

使用CASE和IN更新 - Oracle

我写了一个像SQL Server中的魅力一样的查询.不幸的是,它需要在Oracle数据库上运行.我一直在网上搜索有关如何转换它的解决方案,但没有任何成功:/

查询看起来像这样我的SQL:

UPDATE tab1   SET budgpost_gr1=     
CASE  WHEN (budgpost in (1001,1012,50055))  THEN 'BP_GR_A'   
      WHEN (budgpost in (5,10,98,0))  THEN 'BP_GR_B'  
      WHEN (budgpost in (11,876,7976,67465))     
      ELSE 'Missing' END`
Run Code Online (Sandbox Code Playgroud)

我的问题还在于,柱子budgetpost_gr1和预算邮件是字母数字,Oracle似乎希望将列表视为数字.该列表是预定义为逗号分隔列表的变量/参数,它们只是转储到查询中.

sql oracle sql-update

23
推荐指数
2
解决办法
18万
查看次数

将参数从存储过程传递到函数(在存储过程内)

我有一个问题,我已经研究Stackoverflow没有任何运气的答案.我已经设法构建一个使用名为GetSubtree_relvalue的函数的存储过程.当函数的参数硬编码时,存储过程及其功能正常工作.但是现在我希望函数固有在执行时使用存储过程发送的参数.

当我用@attribute_id替换XX和USA和使用@Client替换USA时,它不会返回任何内容.到目前为止我调试了它,以便我可以断定该函数在运行时没有得到任何值.即使存储过程中的这些参数与我硬编码的值完全相同,也是如此.(我在程序中选择了常规选择@client并返回美国.)

我是否错误地参数化了这个函数?我是否需要启动函数参数才能将其发送/传递给函数?如何获取函数到inhere参数?

关于将参数从SP传递到函数的所有输入,我会很高兴.

使用SQL Server 2008

谢谢

/丹尼尔


功能值硬编码

Insert into att_value_lookup (t.attribute_ID, t.att_value)
Select
t.attribute_ID, t.att_value 
From
(Select attribute_id, att_value from relvalue
where attribute_id in (
            Select attribute_id from (
                        select attribute_id 
                        from dbo.GetSubtree_relvalue('XX','USA'))
 ) as t
Run Code Online (Sandbox Code Playgroud)

函数值已参数化

Insert into att_value_lookup (t.attribute_ID, t.att_value)
Select
t.attribute_ID, t.att_value 
From
(Select attribute_id, att_value from relvalue
where attribute_id in (
            Select attribute_id from (
                        select attribute_id 
                        from dbo.GetSubtree_relvalue('@attribute_id','@client'))
 ) as t
Run Code Online (Sandbox Code Playgroud)

sql sql-server parameters stored-procedures function

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