如何解决每次更改参数并运行sql脚本
我对 sql 很陌生,一直在尝试使用以下脚本对其进行参数化。
这是我的代码:
select
dc.deviceid,dc.kernel_time,dc.crash_time,dc.crash_process,dps.start_time,dps.end_time,dps.start_kernel_time,dps.end_kernel_time,case
when dc.kernel_time between dps.start_kernel_time and dps.end_kernel_time then 1
when dc.crash_time between dps.start_time and dps.end_time then 2
else 3
end as flag,ROW_NUMBER () over (partition by dc.deviceid,dc.crash_process order by flag) row_num
from dummy.dummy_crashes dc
left outer join (select *
from dummy.dummy_power) as dps
on dc.deviceid = dps.deviceid
and ((dc.kernel_time between (dps.start_kernel_time + 10000) and (dps.end_kernel_time + 10000)) or (dc.crash_time between dps.start_time and dps.end_time))
order by dc.crash_time;
我需要通过使用某个 int 参数值 ( 在这个例子中显示:10000) 每次。因此,我不想在代码中修改它,而是想使用所选的 int 参数创建一个函数并运行此脚本。那可能吗? 我真的不知道如何实现这一目标。
我的理想想法是这样的:
get_crashes(10000); <-- get records with adding int parameter (in start_kernel_time and end_kernel_time) as 10000
get_crashes(30000); <-- get records with adding int parameter as 30000
get_crashes(80000); <-- get records with adding int parameter as 80000
我真的很想知道我是如何做到这一点的?
解决方法
我无法发表评论,因为我没有 50rep,但这是我的答案:
您可以使用要传递的值创建一个临时表,并使用简单的查询调用游标,例如:
SELECT [value] FROM *temptable*
之后,在光标内部只用临时表上方的单个值编写脚本
更新
DECLARE
cur CURSOR FOR select col1 from tempTable;
test_cur RECORD;
BEGIN
open cur;
LOOP
fetch cur into test_cur;
exit when test_cur = null;
if test_cur.col1 IS NOT NULL then
return next test_cur.col1;
end if;
END LOOP;
close cur;
END;
注意 - 我从不写 PostgreSQL,只是了解 SQL 并在互联网上找到代码,所以也许你需要检查文档。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。