相关疑难解决方法(0)

如何在简单的PostgreSQL脚本中使用变量?

例如,在MS-SQL中,您可以打开查询窗口并运行以下命令:

DECLARE @List AS VARCHAR(8)

SELECT @List = 'foobar'

SELECT *
FROM   dbo.PubLists
WHERE  Name = @List
Run Code Online (Sandbox Code Playgroud)

如何在PostgreSQL中完成?可以吗?

postgresql variables

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

PostgreSQL:如何从命令行传递参数?

我在使用?占位符的脚本中有一个详细的查询.我想直接从psql命令行(脚本外部)测试这个相同的查询.我想避免进入并用?实际值替换所有值,而是想在查询后传递参数.

例:

SELECT  * 
FROM    foobar
WHERE   foo = ?
   AND  bar = ?
    OR  baz = ?  ;
Run Code Online (Sandbox Code Playgroud)

寻找类似的东西:

%> {select * from foobar where foo=? and bar=? or baz=? , 'foo','bar','baz' };
Run Code Online (Sandbox Code Playgroud)

postgresql parameters

79
推荐指数
4
解决办法
7万
查看次数

如何在postgresql中声明局部变量?

有一个几乎相同,但并没有真正回答的问题在这里.

我正在将应用程序从MS SQL Server迁移到PostgreSQL.在代码中的许多地方我使用局部变量,所以我想进行需要较少工作的更改,所以请告诉我哪个是翻译以下代码的最佳方法?

-- MS SQL Syntax: declare 2 variables, assign value and return the sum of the two 
declare @One integer = 1
declare @Two integer = 2
select @One + @Two as SUM
Run Code Online (Sandbox Code Playgroud)

这会返回:

SUM
-----------
3

(1 row(s) affected)
Run Code Online (Sandbox Code Playgroud)

如果它包含可以简化翻译的重要文件,我会使用Postgresql 8.4甚至9.0.

sql-server migration postgresql

49
推荐指数
1
解决办法
11万
查看次数

Postgresql - 无法识别的配置参数

我从外部服务器导出了一个postgresql数据库,并试图将其导入我的本地服务器,但是出现了这个错误:

unrecognized configuration parameter "idle_in_transaction_session_timeout"
Run Code Online (Sandbox Code Playgroud)

这种错误是否意味着两台服务器使用不同版本的postgresql?我调查了一下,外部服务器正在运行:

version
PostgreSQL 9.5.4 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-bit 
Run Code Online (Sandbox Code Playgroud)

我的服务器正在运行:

version
PostgreSQL 9.5.5 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 5.4.0-6ubuntu1~16.04.2) 5.4.0 20160609, 64-bit 
Run Code Online (Sandbox Code Playgroud)

几乎是一回事.是否有一个站点,您可以在其中查看每个版本的所有有效配置参数?有没有办法同步这样的两个数据库,所以这样的不兼容性会自动修补?

postgresql psql

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

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

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

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

sql postgresql

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

如何将整数列表存储为 PostgreSQL 中的变量

我只是想知道如何在 PostreSQL 存储过程中将整数列表存储为变量。

例如,我有这样的陈述:

   select A from B where C IN (1,2,3);
   select A from B where C IN (1,2);
Run Code Online (Sandbox Code Playgroud)

我想声明一个变量来存储(1,2,3)or (1,2)

所以我最终会得到这样的声明:

select A from B where C in numberList;
Run Code Online (Sandbox Code Playgroud)

(numberList 的值为 (1,2,3))

我不知道我应该使用哪种数据类型,我在网上查了一下,在 psql 中找不到列表类型。它的语法是什么?

postgresql

9
推荐指数
1
解决办法
1万
查看次数

模拟 Postgresql now() 函数进行测试

我有以下堆栈

  • 节点/Express 后端
  • PostgreSQL 10 数据库
  • 摩卡测试
  • 嘲笑的诗乃

我编写了一堆端到端测试来测试我所有的网络服务。问题是其中一些是时间相关的(如“给我最后 X 秒的修改记录”)。

sinon非常擅长模拟 Node 中所有与时间/日期相关的内容,但是modified我的 Postgresql 表中有一个字段填充了触发器:

CREATE FUNCTION update_modified_column()
  RETURNS TRIGGER AS $$
BEGIN
  NEW.modified = now();
  RETURN NEW;
END;
$$ LANGUAGE 'plpgsql';
Run Code Online (Sandbox Code Playgroud)

问题当然是sinon无法覆盖该now()功能。

关于如何解决这个问题的任何想法?问题不是在测试开始时设置特定日期,而是提前时间比实时快(在我的一个测试中,我想更改数据库中的某些内容,将“当前时间”提前一天,更改数据库中还有一些东西,并进行网络服务调用以查看结果)。

我自己可以找出一些解决方案,但它们都涉及更改应用程序代码并使其不那么优雅。我认为您的应用程序代码不应受到您想要测试它的影响。

postgresql mocha.js node.js sinon

8
推荐指数
1
解决办法
1901
查看次数

PostgreSQL中用户定义的变量

我有以下MySQL脚本,我想在PostgreSQL中实现.

 SET @statement = search_address_query;
      PREPARE dynquery FROM @statement;
      EXECUTE dynquery;
      DEALLOCATE PREPARE dynquery;
Run Code Online (Sandbox Code Playgroud)

如何使用PostgreSQL定义用户定义的变量"@statement".

postgresql variables dynamic-sql

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

Postgres:缺少表的FROM子句条目

我正在尝试在postgres上为4个表执行连接查询.

表名:

  • scenarios_scenario
  • payments_invoice
  • payments_payment
  • payments_action

(所有这些奇怪的名字都是由django生成的 - )))

关系:

  • scenarios_scenario[有很多] payments_actions
  • payments_action [有一个] payments_invoice
  • payments_action [有一个] payments_payment

下面是一个工作查询,

SELECT payments_invoice.*,
    (payments_payment.to_be_paid - payments_payment.paid) as remaining, \
    payments_action.identificator
FROM payments_invoice
JOIN payments_payment
  ON payments_invoice.action_id = payments_payment.action_id
  AND payments_payment.full_payment=2
JOIN payments_action
  ON payments_invoice.action_id = payments_action.id
  AND payments_action.identificator = %s
Run Code Online (Sandbox Code Playgroud)

我只是想从另一个表中检索一个相关的字段,并写了另一个查询

SELECT 
  scenarios_scenario.title, payments_invoice.*, \
  (payments_payment.to_be_paid - payments_payment.paid) as remaining, \
  payments_action.identificator, payments_action.scenario_id 
FROM payments_invoice 
JOIN scenarios_scenario 
  ON scenarios_scenario.id = payments_action.scenario_id
JOIN payments_payment 
  ON payments_invoice.action_id = payments_payment.action_id 
  AND payments_payment.full_payment=2 
JOIN …
Run Code Online (Sandbox Code Playgroud)

sql postgresql

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

PostgreSql - 声明整型变量

我试图在 postgresql sql 脚本中声明默认值 0 的整数变量:

DECLARE user_id integer;
Run Code Online (Sandbox Code Playgroud)

但它返回异常:

错误:“整数”处或附近的语法错误

我不确定如何声明一个变量,然后在 while 循环内使用该变量。

postgresql

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

如何在PostgreSQL中声明变量

我尝试在这样的代码中声明一个变量,但它不起作用.你能告诉我这是什么问题吗?

ERROR:  syntax error at or near "VARCHAR"
LINE 2:  p_country VARCHAR;


DECLARE
    p_country VARCHAR;
 p_country : = ''; 
SELECT p_country; 
Run Code Online (Sandbox Code Playgroud)

postgresql

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

在where子句中使用"If"条件

我喜欢在where子句中使用"IF"条件.从各种线程,我理解其中一个选项是CASE表达式,但我无法弄清楚.

示例代码:

select * from sampleTable
where 
  If @taxtype = 'P' then
    (taxtype = 'P' or  (taxtype = 'E' and code in ('MER','SER')))
  Else
    (taxtype = 'E' and code not in ('MER','SER'))
  End If
Run Code Online (Sandbox Code Playgroud)

任何帮助是极大的赞赏.

谢谢!

sql postgresql

2
推荐指数
1
解决办法
112
查看次数

有没有在PostgreSQL查询中使用变量的简便方法?

使用:PostgreSQL10&pgAdmin4

所以这个查询很简单:

SELECT * FROM [schema_name].[table_name] 
   WHERE [schema_name].[table_name].[field_name] = 'search_value';
Run Code Online (Sandbox Code Playgroud)

在Transact-SQL中,可以为“ search_value”创建一个变量:

DECLARE @find varchar(30) = 'search_value';

SELECT * FROM [schema_name].[table_name] 
   WHERE [schema_name].[table_name].[field_name] = @find;
Run Code Online (Sandbox Code Playgroud)

甚至重新使用变量:

SET @find = 'new_search_value';
Run Code Online (Sandbox Code Playgroud)

我现在已经尽一切努力在PostgreSQL中模仿它,但是我无法使其正常工作。

有什么建议么???

postgresql variables pgadmin

2
推荐指数
1
解决办法
92
查看次数