pg.ddx.io  pgsql-interfaces@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Kamil Andrusz <wizz@mniam.net>
To: pgsql-interfaces@postgresql.org
Subject: 'execute immediate' problem
Date: Wed, 02 Jun 2004 11:15:23 +0200
Message-ID: <8765aa5nis.fsf@shwurzbung.mniam.net> (raw)

Hello list,

I've go a litlle test program, that should transfer data from one db to
another. It's just a quick hack to check if it would work at all.
----
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <err.h>

int
main(int argc, char *argv[])
{
	EXEC SQL BEGIN DECLARE SECTION;
	char node_name[255];
	char node_type[255];
	char stmt[1024];
	char ins[1024];
	EXEC SQL END DECLARE SECTION;

	EXEC SQL WHENEVER SQLERROR sqlprint;
	EXEC SQL WHENEVER NOT FOUND continue;

	EXEC SQL CONNECT TO test1 AS src_link USER test;

	EXEC SQL CONNECT TO test2 AS dst_link USER test;

	sprintf(stmt, "SELECT node_name, node_type FROM node ORDER BY node_type");

	EXEC SQL PREPARE node_p FROM :stmt;
	EXEC SQL AT src_link DECLARE node_c CURSOR FOR node_p;
	EXEC SQL AT src_link OPEN node_c;

	EXEC SQL WHENEVER SQLERROR sqlprint;
	EXEC SQL WHENEVER NOT FOUND goto _done;
	for (;;) {
		EXEC SQL AT src_link FETCH node_c INTO :node_name, :node_type;
		sprintf(ins, "INSERT INTO node (node_name, node_type) VALUES ('%s', '%s')",
			node_name, node_type);
		printf("%s;\n", ins);
		EXEC SQL AT dst_link EXECUTE IMMEDIATE :ins;
	}

_done:
	EXEC SQL AT src_link CLOSE node_c;
	EXEC SQL AT src_link FREE node_p;

	EXEC SQL DISCONNECT dst_link;
	EXEC SQL DISCONNECT src_link;
	
	exit(0);
}
----

The problem is, the 'EXEC SQL AT dst_link EXECUTE IMMEDIATE :ins;'
doesn't seem to work. When I do a 'select * from node' on the test2
database it shows 0 rows. The 'debug' printf shows, that the :ins
statement is correct.

The node table in both db's have two columns, node_name and node_type.

I'm running PostgreSQL 7.3.5 on OpenBSD 3.5.

I think I'm missing something obvious. Any hints?

Regards,
Kamil Andrusz
-- 
It's just a matter of opinion.



view thread (2+ messages)  latest in thread

Message-ID: <8765aa5nis.fsf@shwurzbung.mniam.net>
Permalink:  ../8765aa5nis.fsf@shwurzbung.mniam.net/
Also on:    postgresql.org/message-id/8765aa5nis.fsf@shwurzbung.mniam.net

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-interfaces@postgresql.org
  Cc: wizz@mniam.net
  Subject: Re: 'execute immediate' problem
  In-Reply-To: <8765aa5nis.fsf@shwurzbung.mniam.net>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox