PGSQL记录

1.每句后面需要加 ;

2.获取时间

当前时间 :  GETDATE()    now()   LOCALTIMESTAMP
提前几天时间:  now()::DATE -3+ now()::TIME
推迟几天时间:now()+1
获取第几周:   date_part('week',@Today)    day month
设定每周的第一天为周一  SET datestyle TO ISO, DMY;
convert(datetime, TmpJITSuppPart_UTime)不支持第三个参数

3.数据转换

SELECT to_number(23,99);
SELECT to_char('12', '999');

4.调用存储过程

call add_Log(1,1,1,1);

5.声明变量且赋值 判断

CREATE OR REPLACE PROCEDURE add_Log(
    @Param1 varchar(100), 
    @Param2 varchar(100), 
    @Param3 varchar(100), 
    @Param4 varchar(30)-- 操作用户ID  
)
AS 

DECLARE 
 @Today DATETIME:= LOCALTIMESTAMP;
 @CurrWeek varchar(50);
 @Type varchar(20);
 @Result varchar(20);
BEGIN 
   --直接赋值
    @CurrWeek := to_char(LOCALTIMESTAMP,'YYYY')+ '/' + 'WK' + to_char(date_part('week',@Today),'99');
    --查询赋值
    select Style into @Type
    from student;

   if 1=1
    then
        begin
            @Result := 'Normal';
        end;
    else
        begin
             @Result := 'Exception';
        end;    
    end if;
   RAISE NOTICE 'The value of my_variable is %', @Result;  --打印数据
    savepoint 1;
   ROLLBACK to savepoint 1;
   COMMIT;  --提交
--抛出异常
EXCEPTION
    WHEN others THEN    
    RAISE EXCEPTION '%', SQLERRM;  --抛出异常
    ROLLBACK;  --回滚
END; 

--查询PGSQL存储过程数量

SELECT COUNT(*)
FROM pg_proc
WHERE prokind IN ('p') AND pronamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'student');

---查询PGSQL数据库特定scema中存储过程内容中的字符串

SELECT p.proname 
FROM pg_proc p
JOIN pg_namespace n ON p.pronamespace = n.oid
WHERE n.nspname NOT IN ('pg_catalog', 'information_schema')
AND p.prokind = 'p' 
AND pronamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'wlms_br')
and p.prosrc like '%Add_Log%'

---设置按照mssql语法下执行存储过程脚本

SELECT * FROM pg_settings where NAME='enable_set_variable_mssql_format'
SET enable_set_variable_mssql_format ON;

--连接到数据库

		Environment bean = ToolSpring.getBean(Environment.class);
        String url = bean.getProperty("spring.datasource.url");
        String user = bean.getProperty("spring.datasource.username");
        String password = bean.getProperty("spring.datasource.password");
        Connection conn = DriverManager.getConnection(url, user, password);
        // 创建存储过程调用的语句
        String sql = "{perform ADD_Log(?,?,?,?)}";
        PreparedStatement stmt = conn.prepareStatement(sql);
        // 设置表值参数
        stmt.setArray(1, param1);
        stmt.setLong(2, param2);
        stmt.setString(3, param3);
        stmt.setString(4, param4);
        // 执行存储过程
        stmt.execute();
        // 关闭连接
        stmt.close();
        conn.close();
相关推荐
奋斗者职场日记5 分钟前
redis高性能键值数据库技术简介
数据库·redis·缓存
我爱夜来香A33 分钟前
Sql进阶:字段中包含CSV,如何通过Sql解析CSV成多行多列?
数据库·sql
helloworld63791 小时前
高斯数据库Postgresql死锁和锁表解决方法
数据库·postgresql·死锁·高斯·锁表
TracyDemo2 小时前
postgresql.conf与postgresql.auto.conf区别
数据库·postgresql
小吕学编程2 小时前
开发中SQL积累
java·数据库·sql
渗透测试老鸟-九青2 小时前
通过组合Self-XSS + CSRF得到存储型XSS
服务器·前端·javascript·数据库·ecmascript·xss·csrf
Narutolxy2 小时前
深入探讨 MySQL 配置与优化:从零到生产环境的最佳实践20241112
数据库·mysql
2401_833755813 小时前
PostgreSQL 页损坏如何修复
数据库·postgresql
Elastic 中国社区官方博客4 小时前
Elasticsearch retrievers 通常与 Elasticsearch 8.16.0 一起正式发布!
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索