首页 > 其他分享 >lightdb 支持无参函数无括号使用

lightdb 支持无参函数无括号使用

时间:2024-01-22 11:33:05浏览次数:24  
标签:无参 lightdb -- t2 括号 noparam fn select 函数

背景

在 Oracle 中,用户自定义的无参函数可以不带括号执行。为支持该特性,LightDB 24.1 版本中,允许用户使用无参函数的函数名调用函数,包括系统函数,如:now.

用例

create function fn_noparam() RETURNS int
language sql
as $$
  select 1;
$$;
--= 1, simple expr
select fn_noparam;
--= 2
select fn_noparam + 1;
--= true
select fn_noparam = 1;

--= 1, composed expr
select least(fn_noparam, 2);

校验列名和函数名的优先级

create table t2(fn_noparam int, a int);
insert into t2 values(0, 1);
insert into t2 values(1, 1);

--= 1
select count(*) from t2 where fn_noparam = a;
--= 1
select count(*) from t2 where 1 + fn_noparam = a;

存储过程名是不允许在 select 语句中出现的,

create procedure pc_noparam()
language plpgsql
as $$
begin
  raise notice 'ok';
end;
$$;

--= error
select pc_noparam;

--= `call` procedure without parentheses it supported by previous version
call pc_noparam;

标签:无参,lightdb,--,t2,括号,noparam,fn,select,函数
From: https://www.cnblogs.com/lddcool/p/17979690

相关文章

  • lightdb datetime 函数参数名支持
    背景在Oracle和PostgreSQL中datetime标识符并没有作为关键字,也不是数据类型。在Mysql中,datetime是数据类型名,但并不是保留关键字。在LightDB23.4及以前版本中,datetime被误当成可以作为列名的关键字,导致Oracle用户使用datetime作为函数参数名,函数名等情况都会报......
  • Shell笔记:括号( ) 与 双括号 (( ))
    括号()单括号(...)常用的用法有两种,一种是用于shell中的数组,一种是获取命令执行后的结果。1.数组:括号()最直观的使用当然是数组,因为shell中数组的定义就是array_name=(value1value2...),这里只列一些基础的使用示例:#!/bin/sh#数组定义my_array=("a""b""c")#......
  • Shell笔记:中括号[ ] 与 双中括号[[ ]]
    []和[[]]这两者最常用的用法就是用作条件判断,用作条件判断时,推荐使用双中括号[[]]的方式。需要特别注意,使用时符号边界处和操作符两边都必须要要有空格,如[[a>b]]。这里列出一些使用它们时的不同之处(了解之后就知道为什么推荐使用[[]]了):符号性质[]是bash的......
  • 代码随想录算法训练营第 十 一 天| 20. 有效的括号 1047. 删除字符串中的所有相邻重
    LeetCode 20.有效的括号题目链接:20.有效的括号思路:采用栈数据结构解题;遇到左括号,压右括号入栈 LeetCode 1047.删除字符串中的所有相邻重复项题目链接:1047.删除字符串中的所有相邻重复项注意:Java中队列实现类API的使用 LeetCode 150.逆波兰表达式求值题目链......
  • 有效的括号
      /**@lcapp=leetcode.cnid=20lang=cpp**[20]有效的括号*///@lccode=startclassSolution{public:boolisValid(strings){stack<char>cs;for(charch:s){if(ch=='('||ch==......
  • 20. 有效的括号C
    写个数组当作栈用就行了。boolisValid(char*s){intt[100000]={0};inttop=0;intflag=1;for(inti=0;i<strlen(s);i++){if(s[i]=='('){t[top++]=1;}elseif(s[i]=='{'){......
  • 20. 有效的括号C++
    括号匹配用栈是解决是最简单那的。遇到左括号就入栈。遇到右括号就出栈,然后看是否匹配。这里再用一个map把括号数字化会更简单。classSolution{public:boolisValid(strings){map<char,int>m={{'(',1},{')',-1},{'{',2},{'}',-......
  • leetcode 20.有效的括号
    leetcode20.有效的括号第二十题:有效的括号1.栈:判断括号的有效性可以使用「栈」这一数据结构来解决。我们遍历给定的字符串s。当我们遇到一个左括号时,我们会期望在后续的遍历中,有一个相同类型的右括号将其闭合。由于后遇到的左括号要先闭合,因此我们可以将这个左括号放入栈顶......
  • python 最长有效括号 多种解法
    使用栈:遍历字符串,当遇到左括号时,将其下标压入栈中;当遇到右括号时,如果栈为空,则将当前右括号下标作为新的起始点,否则将栈顶元素出栈,并计算当前有效括号的长度。Python代码示例:deflongest_valid_parentheses(s):stack=[-1]#栈中始终保持一个起始位置max_length=0......
  • IDEA项目名称后面出现中括号,模块Modules的名子和文件夹名称不同,可以右键修改名称也可
    IDEA项目名称后面出现中括号,Modules的名子和文件夹名称不同,可以右键修改名称也可以在File->ProjectStructure修改Modules的Name(快捷键ctrl+Shift+Alt+s)Project中出现中括号如:原因:Modules的名子和文件夹名称不同解决主要是通过修改名称一致就可以可以右键修改名称也可......