从本质上讲,我试图遍历@sprocs
变量的内容,实现replace函数,并打印相应的更改。当我执行代码时,@spname
变量被打印出来,只是没有得到预期的结果。
declare @sprocs cursor
declare @spname nvarchar(max)
set @sprocs = cursor for
select ROUTINE_DEFINITION
from INFORMATION_SCHEMA.ROUTINES
where ROUTINE_TYPE = 'Procedure' AND
ROUTINE_DEFINITION like '%someString%'
open @sprocs
fetch next from @sprocs into @spname
while @@FETCH_STATUS = 0
Begin
set @spname = replace(@spname, '%someString%', 'Hello')
print @spname
fetch next from @sprocs into @spname
end
预期结果如下:
Before
Lorem ipsum dolor坐在那里,有些字符串是有价值的,这是非常重要的。这是一个非常小的问题,当然也可以锻炼身体。在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责
After
Lorem ipsum Door sit amet,您好,再见,精英们,请临时加入我们的劳动和生活。我是一个小女孩,我是一个小女孩,我是一个实习医生。两人或两人在一个无教区的房间里互相指责。您好,我的孩子,我的孩子,我的孩子,我的孩子,我的孩子。
起初,我认为这可能是@spname
变量类型的问题,但由于它被声明为nvarchar(max)
,我看不出这是问题所在。
什么阻止了预期的打印输出?
除了在搜索字符串中不使用通配符外,您还真的不需要光标。SQL以数据集为基础工作,并将在标准的select
语句中执行的任何操作应用于返回的所有行。
有鉴于此,你的陈述应该是:
select ROUTINE_DEFINITION
,replace(ROUTINE_DEFINITION,'someString','Hello') as ReplacedValues
from INFORMATION_SCHEMA.ROUTINES
where ROUTINE_TYPE = 'Procedure'
and ROUTINE_DEFINITION like '%someString%'
它将对查询返回的ROUTINE\u DEFINITION
的每个值应用replace
函数。
我正在使用SQL Developer并编写此PL/SQL代码。但当我给B作为选项时,我得到了一个错误。请帮忙。 错误报告:
问题内容: 假设我有一个普通的SQL过程,其中包含一些参数。 在调试过程中,如果我可以为这些参数分配一些值,这样我就可以突出显示proc的主体并执行它(而不是用值手动替换变量),那将是一个很好的选择。 有什么办法吗?我试过了: 但这不喜欢吗? 问题答案: 尝试 好像您缺少了clarify语句。如果它不喜欢‘2012-03-23’部分,则可能必须强制转换。
我有使用int访问数组的习惯(尤其是在for循环中);然而,我最近发现我可能“做错了”,我的x86系统一直对我隐瞒真相。事实证明,当时,int很好,但当用于
变量名是其所指向值的一个占位符(placeholder)。引用变量值的过程我们称之为变量替换(variable substitution)。 $ 接下来我们仔细区分一下变量名与变量值。如果变量名是 variable1, 那么 $variable1 就是对变量值的引用。[^1] bash$ variable1=23 bash$ echo variable1 variable1 bash$ echo
问题内容: 我怎样才能做到这一点? 它将替换为文本。但是我想用变量的内容替换它。 我尝试过 它也不起作用。 问题答案: 您需要使用双引号: 您的单引号可防止将shell变量替换为其内容。
有没有办法做到这一点?