回答

收藏

当SQL包含变量时在pgAdmin中调试SQL

技术问答 技术问答 176 人阅读 | 0 人回复 | 2023-09-14

在SQL Server中,我可以从应用程序中复制sql代码,然后将其粘贴到SSMS中,声明并分配sql中存在的var,然后运行。是伟大的调试方案。
+ c5 G) R* ^- f- c0 W) F例如(请注意,我生疏了,语法可能不正确):
& A8 Q1 `% w/ P# L% T8 kdeclare @x as varchar(10)
- z5 s4 A8 L& o5 h9 Zset @x = 'abc'$ M2 X: F+ \# P
select * from sometable where somefield = @x1 F% n) x2 o" I. M+ h
我想在pgAdmin中使用Postgres做类似的事情(或其他postgres工具,有什么建议吗?),我可以将我的SQL(参数和全部)放到可以在Postgres
% G' I5 {' ^+ P$ }% }- g. ZDB上运行的东西上。7 m. z5 Z; X) v- I  F
我意识到您可以创建pgscript,但是它看起来不是很好,例如,如果我做上面的等效操作,则它不会在@x的值两边加上单引号,也不会让我将它们加倍,之后便没有桌子了-
# n* ], `3 [  Y只有文字…; |! R* `7 E7 {* X- ?' _
目前我有一段SQL有人写过,其中有3个唯一变量,每个变量约被使用6次…5 y7 Y8 t6 P3 }1 |# X7 k
因此,问题是其他人如何 有效 地调试SQL ,最好以与SQL Server时代相似的方式进行调试。- U9 `2 E2 @5 D- Y3 V7 i
                & Z2 j. z( U% d* h
解决方案:
6 g, t: S% l* R, G7 T               
2 ]6 P& C- j% z4 z" W# |
& a2 |- b/ I' |4 A8 @0 T" t
& o* s" w" M: o2 Z5 ?7 F; a                您可以使用PREPARE,EXECUTE,DEALLOCATE命令处理语句来实现这一点,这实际上就是我们在这里所说的。5 @' m; g4 X8 S) n- @7 r3 y* _- C3 ~8 p: E
例如:
0 c- V; U2 h+ _% Y6 D# F0 ePREPARE test AS SELECT * FROM users WHERE first_name = $1;' _8 a( `+ V7 T+ V
EXECUTE test ('paul');2 @5 q( L$ @: W% L# O, j
DEALLOCATE test;; |' Y* J+ ?4 H5 p6 x7 ]
也许不像某些人喜欢的那样图形化,但肯定可行。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则