Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL:dblink查询中没有参数$1_Postgresql_Stored Procedures_Parameters_Postgresql 9.3_Dblink - Fatal编程技术网

PostgreSQL:dblink查询中没有参数$1

PostgreSQL:dblink查询中没有参数$1,postgresql,stored-procedures,parameters,postgresql-9.3,dblink,Postgresql,Stored Procedures,Parameters,Postgresql 9.3,Dblink,我目前正在使用PostgreSQL 9.3,我正在尝试使用连接到另一个数据库(esms)的此函数,并且所述函数的结果将在另一个数据库(seis)中的另一个函数中进行比较和使用 但是当我尝试这个的时候 SELECT lowest_grade_query('2014-0035'); 我得到这个错误: ERROR: there is no parameter $1 CONTEXT: Error occurred on dblink connection named "esms_ref": cou

我目前正在使用PostgreSQL 9.3,我正在尝试使用连接到另一个数据库(esms)的此函数,并且所述函数的结果将在另一个数据库(seis)中的另一个函数中进行比较和使用

但是当我尝试这个的时候

SELECT lowest_grade_query('2014-0035');
我得到这个错误:

ERROR:  there is no parameter $1
CONTEXT:  Error occurred on dblink connection named "esms_ref": could not execute query.
SQL statement "SELECT *           FROM dblink('esms_ref', 'SELECT MAX(to_number(CASE WHEN grade IN (''DRP'', ''INC'')
                                          THEN ''5.00'' 
                                          ELSE grade END, ''9D99'')) 
                         FROM registration
                         WHERE studid=$1') AS lowest_grade(grade numeric(3,2))"

哪里出错了?

您忘记为远程查询转换参数
$1

您的查询是:

 dblink('esms_ref', 'SELECT * FROM registration WHERE studid=$1')
参数
$1
的值是多少?dblink执行的查询有自己的名称空间,plpgsql变量不会隐式传播到其中$1与dblink(或其他动态)查询中的
$1
不同。必须将参数显式合并到查询字符串中:

dblink('esms_ref', 
   format('SELECT * FROM registration WHERE studid=%L', $1))
dblink('esms_ref', 
   format('SELECT * FROM registration WHERE studid=%L', $1))