Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
Forum 4D Documentations F.A.Q 4D Trucs & astuces Notes techniques 4D & SGBDR 4D & XML 4D & Web Livres 4D

Ecrire dans une colonne Oracle de type BLOB

Date de publication : 30/05/2007

Par Stéphanie Tirtiat (Intl Tech Support)
 



Produit : 4D ODBC Pro (4D 2004) · Plateforme : Mac & Win


Voici un code exemple qui écrit des données dans une colonne Oracle de type BLOB avec les commandes du plugin 4D ODBC Pro 2004.

La méthode procède d'abord avec un INSERT, puis utilise une requête UPDATE pour ajouter le document sélectionné dans la colonne Oracle de type BLOB qui vient d'être créée avec l'INSERT.

code 4D

C_ENTIER LONG($result;$connectionID;$statementID;$res;$res2)
C_TEXTE(SQLState)
C_ENTIER LONG(nativeError)
C_TEXTE(debugMess)

C_TEXTE(<>DataSource;<>UserName;<>Password)
   `xxx à remplacer
<>DataSource:="xxx"
<>UserName:="xxx"
<>Password:="xxx"
$result:=ODBC_SQLAllocConnect ($connectionID)
$result:=ODBC_SQLConnect ($connectionID;<>DataSource;<>UserName;<>Password)

Si ($result=SQL_SUCCESS )  `Connexion OK
	
	$result:=ODBC_SQLAllocStmt ($connectionID;$statementID)  `handle
	
	C_ENTIER LONG(zeLength)
	zeLength:=0
	C_ENTIER LONG(zeID)
	C_TEXTE(zeName)
	
	  ` ------------ INSERT -------------
	$sql_statement:="INSERT INTO test_lob VALUES (?, ?, NULL)"
	$result:=ODBC_SQLPrepare ($statementID;$sql_statement)
	zeID:=20
	zeName:="doc_20"
	$result:=ODBC_SQLBindParameter ($statementID;1;1;SQL_INTEGER ;0;0;->zeID;->zeLength)  `colonne NUMBER
	$result:=ODBC_SQLBindParameter ($statementID;2;1;SQL_VARCHAR ;0;0;->zeName;->zeLength)  `colonne VARCHAR2
	$result:=ODBC_SQLExecute ($statementID)
	
	Si ($result#-1)  `si pas d'erreur
		  ` ------------ UPDATE -------------
		$sql_statement:="UPDATE test_lob SET t_blob = ? WHERE t_ID = 20"
		$result:=ODBC_SQLPrepare ($statementID;$sql_statement)
		
		C_BLOB(zeBlob)
		C_HEURE($doc)
		$doc:=Ouvrir document("")
		Si (ok=1)
			FERMER DOCUMENT($doc)
			DOCUMENT VERS BLOB(document;zeBlob)
		Fin de si 
		
		zeLength:=ODBC_LenDataAtExec (0)
		$result:=ODBC_SQLBindParameter ($statementID;1;1;SQL_LONGVARBINARY ;0;0;->zeBlob;->zeLength)
		$result:=ODBC_SQLExecute ($statementID)  `retourne normalement 99 SQL_NEED_DATA
		Si ($result#-1)  `si pas d'erreur
			Tant que ($result=SQL_NEED_DATA )
				$result:=ODBC_SQLParamData ($statementID)
				Si ($result=SQL_NEED_DATA )
					$res2:=ODBC_SQLPutData ($statementID;->zeBlob;0)
				Fin de si 
			Fin tant que 
		Sinon 
			TRACE  `passe en mode debug
			$res:=ODBC_SQLGetDiagRec (SQL_HANDLE_STMT ;$statementID;1;SQLState;nativeError;debugMess)
		Fin de si 
		
	Sinon 
		TRACE  `passe en mode debug
		$res:=ODBC_SQLGetDiagRec (SQL_HANDLE_STMT ;$statementID;1;SQLState;nativeError;debugMess)
		
	Fin de si 
	
	$result:=ODBC_SQLFreeStmt ($statementID)  `libère le handle
	$result:=ODBC_SQLDisconnect ($connectionID)  `déconnexion
	
Sinon 
	ALERTE("connection failed")
Fin de si 
info Documentation des commandes du plugin 4D ODBC Pro :
   · en ODBC_SQLAllocConnect
   · en ODBC_SQLConnect
   · en ODBC_SQLDisconnect
   · en ODBC_SQLAllocStmt
   · en ODBC_SQLFreeStmt
   · en ODBC_SQLPrepare
   · en ODBC_SQLBindParameter
   · en ODBC_SQLExecute
   · en ODBC_LenDataAtExec
   · en ODBC_SQLParamData
   · en ODBC_SQLPutData
   · en ODBC_SQLGetDiagRec



Valid XHTML 1.1!Valid CSS!

Copyright © 2007 4D s.a. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.

Responsable bénévole de la rubrique 4D : Elgo - Contacter par EMail :
Vos questions techniques : forum d'entraide 4D - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.