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();
相关推荐
黄焖鸡能干四碗3 小时前
固定资产管理系统建设方案和源码(Java源码)
大数据·数据库·人工智能·物联网·区块链
JoneBB4 小时前
ABAP Webservice连接
运维·开发语言·数据库·学习
解决问题no解决代码问题4 小时前
从乱码到脱敏导出:TiDB CSV 导出实战全指南
数据库
未若君雅裁4 小时前
MySQL高可用与扩展-主从复制读写分离分库分表
java·数据库·mysql
2401_867623984 小时前
CSS Flex布局中如何设置子元素间距_掌握gap属性的现代用法
jvm·数据库·python
月落归舟4 小时前
一篇文章了解Redis内存淘汰机制与过期Key清理
数据库·redis·mybatis
phltxy5 小时前
Redis 事务
数据库·redis·缓存
康乾隆5 小时前
SQL Server Always On 重新添加从库步骤
数据库·sqlserver
环流_6 小时前
redis核心数据类型在java中的操作
java·数据库·redis
雨辰AI6 小时前
SpringBoot3 项目国产化改造完整流程|从 MySQL 到人大金仓落地
java·数据库·后端·mysql·政务