相关疑难解决方法(0)

如何在PostgreSQL查询中声明变量

如何声明变量以用于PostgreSQL 8.3查询?

在MS SQL Server中,我可以这样做:

DECLARE @myvar INT
SET @myvar = 5

SELECT *
FROM somewhere
WHERE something = @myvar
Run Code Online (Sandbox Code Playgroud)

我如何在PostgreSQL中做同样的事情?根据文档变量被简单地声明为"名称类型;",但这给了我一个语法错误:

myvar INTEGER;
Run Code Online (Sandbox Code Playgroud)

有人能给我一个正确语法的例子吗?

sql postgresql postgresql-8.3

205
推荐指数
13
解决办法
31万
查看次数

使用PL/pgSQL将查询结果存储在变量中

如何将查询结果分配给PL/pgSQL中的变量,这是PostgreSQL的过程语言?

我有一个功能:

CREATE OR REPLACE FUNCTION test(x numeric)
RETURNS character varying AS
$BODY$
DECLARE
name   character varying(255);
begin
 name ='SELECT name FROM test_table where id='||x;

 if(name='test')then
  --do somthing
 else
  --do the else part
 end if;
end;
return -- return my process result here
$BODY$
LANGUAGE plpgsql VOLATILE
Run Code Online (Sandbox Code Playgroud)

在上面的函数中我需要存储此查询的结果:

'SELECT name FROM test_table where id='||x;
Run Code Online (Sandbox Code Playgroud)

到变量name.

怎么处理这个?

database postgresql stored-procedures plpgsql postgresql-9.1

108
推荐指数
3
解决办法
18万
查看次数

有没有办法在PostgreSQL查询中定义命名常量?

有没有办法在PostgreSQL查询中定义命名常量?例如:

MY_ID = 5;
SELECT * FROM users WHERE id = MY_ID;
Run Code Online (Sandbox Code Playgroud)

sql postgresql

41
推荐指数
5
解决办法
3万
查看次数

如何在DO块中执行选择查询?

我想将以下SQL代码从MS SQL-Server移植到PostgreSQL.

DECLARE @iStartYear integer
DECLARE @iStartMonth integer

DECLARE @iEndYear integer
DECLARE @iEndMonth integer

SET @iStartYear = 2012
SET @iStartMonth = 4

SET @iEndYear = 2016
SET @iEndMonth = 1


;WITH CTE 
AS
(
    SELECT 
         --@iStartYear AS TheStartYear 
         @iStartMonth AS TheRunningMonth 
        ,@iStartYear AS TheYear  
        ,@iStartMonth AS TheMonth 

    UNION ALL 

    SELECT 
         --CTE.TheStartYear AS TheStartYear 
         --@iStartYear AS TheStartYear 
         CTE.TheRunningMonth + 1 AS TheRunningMonth 
         --,CTE.TheStartYear + (CTE.TheRunningMonth / 12) AS TheYear 
        ,@iStartYear + (CTE.TheRunningMonth / 12) AS TheYear 
        ,(CTE.TheMonth + 1 -1) % …
Run Code Online (Sandbox Code Playgroud)

sql postgresql plpgsql postgresql-9.1 generate-series

16
推荐指数
3
解决办法
3万
查看次数

如何在postgres脚本中声明变量?

我对 Postgres 还很陌生,我不敢相信仅仅声明一个变量就这么困难。我确实遇到过其他 SO 帖子,但没有一个对我的情况有帮助。我想要的只是在 postgres 中编写如下所示的脚本:

declare @age int = 10;

select * from person p where p.age > @age;
Run Code Online (Sandbox Code Playgroud)

根据这里的SO帖子,我尝试过:

DO
$$
    DECLARE
        overTheAgeOf int := 15;
    BEGIN
        select *
        from person
        where age > overTheAgeOf;
    END
$$;
Run Code Online (Sandbox Code Playgroud)

这给了我错误:[42601] ERROR: query has no destination for result data

然后我尝试返回脚本的结果:

return (select *
    from person
    where age > overTheAgeOf);
Run Code Online (Sandbox Code Playgroud)

这给了我另一个错误:ERROR: RETURN cannot have a parameter in function returning void

如何声明变量并在后面的脚本中使用它?

postgresql

8
推荐指数
2
解决办法
2万
查看次数