在Oracle SQL中,将使用这样的代码?

时间:2014-08-05 19:27:42

标签: sql oracle

只是研究一些代码,并且遇到了这一行:

v_VLDT_TOKEN_VLU := v_onl_acctID || ‘|’ || p_onl_external_id || ‘|’ ||  p_validation_target

这是一个“验证令牌值”,但为什么要连接管道符号?我理解这是针对动态SQL的。

4 个答案:

答案 0 :(得分:1)

看起来管道符号被用作三个字段之间的分隔符。

答案 1 :(得分:1)

此处管道符号用作字段之间的分隔符/分隔符:

假设,

v_onl_acctID = 123
p_onl_external_id  = abc
p_validation_target = xyz

然后

v_VLDT_TOKEN_VLU := v_onl_acctID || ‘|’ || p_onl_external_id || ‘|’ ||  p_validation_target

将评估为

v_VLDT_TOKEN_VLU = 123|abc|xyz

它只是用于分隔符目的的另一个字符,也可以替换为任何其他分隔符。作为参考,如果|*替换,请说

v_VLDT_TOKEN_VLU := v_onl_acctID || ‘*’ || p_onl_external_id || ‘*’ ||  p_validation_target

然后表达式的值将为123*abc*xyz

注意:||用于连接

答案 2 :(得分:1)

我实际上看过类似的代码,但它用于生成一个unix语句,用于将一个命令的输出传送给另一个命令。如果我没记错的话,他们有一个包含所有数据库主机和oracle数据目录的表。他们使用与此类似的代码来覆盖特定的数据库主机,获取数据文件的目录并将输出写回父服务器上的日志文件,然后他们读入这些日志文件以更新磁盘使用情况以进行报告。这是多年前所以我确信现在有更好的方法。

答案 3 :(得分:0)

评论=答案显然。

v_vldt_token_vlu看起来它是由三个字段构成的,每个字段之间有一个管道...我假设管道内置在token_vlu字段中,然后与这里连接在一起的相同字段进行比较。 Pipe可能是开发人员的偏好。这里没有真正的动态SQL参考