2016-04-29 5 views
0

Hier habe ich einen Typ erstellt, um json_populate_recordset Funktion zu verwenden.Postgres Problem mit json_populate_recordset Funktion

CREATE TYPE Visits_type AS 
    (facilityId varchar,patientId varchar,encounterId numeric,patientClass varchar,admnDate varchar,dischargeDate varchar,practitionerId varchar, 
    careLocationType varchar,careLocationCode varchar,specialtyCode varchar,status varchar,admitPractitionerId varchar,hpSeqNo varchar,admissionType varchar,assignedRoom varchar,assignedBed varchar, 
    Firstname varchar, 
    Patientname varchar, 
    Firstnamelocal varchar, 
    Patientnamelocal varchar, 
    sex varchar, 
    Dob varchar, 
    Mobilenumber varchar, 
    Emailid varchar, 
    RegnFacilityid varchar); 

folgende Beispiel-SQL und json verwendet:

SELECT * from json_populate_recordset(null::Visits_type, '[ 
    { 
    "facilityId": "10","patientId": "GH00000940","encounterId": 100011770001,"patientClass": "OP","admnDate": "2015-05-17 17:25","dischargeDate": null,"practitionerId": "ALLEN","careLocationType": "C","careLocationCode": "CL11","specialtyCode": "SP11", "status": "E", "admitPractitionerId": null, "hpSeqNo": 3796, "admissionType": "First Visit", "assignedRoom": "R1", "assignedBed": null, "firstName": "Suresh", "patientName": "Suresh Machwal", "firstNameLocal": null, "patientNameLocal": null, "sex": "M", "dob": "1970-05-17", "mobileNumber": null, "emailId": null, "regnFacilityId": "GH" }, { 
    "facilityId": "10", 
    "patientId": "GH00000940", 
    "encounterId": 100011770001, 
    "patientClass": "OP", 
    "admnDate": "2015-05-17 17:25", 
    "dischargeDate": null, 
    "practitionerId": "ALLEN", 
    "careLocationType": "C", 
    "careLocationCode": "CL11", 
    "specialtyCode": "SP11", 
    "status": "E", 
    "admitPractitionerId": null, 
    "hpSeqNo": 3795, 
    "admissionType": "First Visit", 
    "assignedRoom": "R1", 
    "assignedBed": null, 
    "firstName": "Suresh", 
    "patientName": "Suresh Machwal", 
    "firstNameLocal": null, 
    "patientNameLocal": null, 
    "sex": "M", 
    "dob": "1970-05-17", 
    "mobileNumber": null, 
    "emailId": null, 
    "regnFacilityId": "GH" 
    }]'); 

Das Problem ist, dass die Null-Werte für alle Felder zurückkehrt, mit Ausnahme dann dob, status und sex.

+0

i die tatsächlichen Werte sehen kann, wenn i .. abfragen, aber wenn die Verwendung FOR I IN (* FROM json_populate_recordset SELECT (null :: visits_type, visit_info -> 'visits')) LOOP .. Ich bekomme Fehler i.patientID Feld ist nicht verfügbar. Ich habe TYPE visit_type, das ich mit doppelten Anführungszeichen erstellt habe –

Antwort

1

sollten Sie doppelte Anführungszeichen verwenden, wenn Sie Ihre Art erstellen Sie Ihren ursprünglichen Fall zu halten:

CREATE TYPE Visits_type AS 
    ("facilityId" varchar, 
    "patientId" varchar, 
    "encounterId" numeric, 
    "patientClass" varchar, 
    "admnDate" varchar, 
    "dischargeDate" varchar, 
    "practitionerId" varchar, 
    "careLocationType" varchar, 
    "careLocationCode" varchar, 
    "specialtyCode" varchar, 
    "status" varchar, 
    "admitPractitionerId" varchar, 
    "hpSeqNo" varchar, 
    "admissionType" varchar, 
    "assignedRoom" varchar, 
    "assignedBed" varchar, 
    "Firstname" varchar, 
    "Patientname" varchar, 
    "Firstnamelocal" varchar, 
    "Patientnamelocal" varchar, 
    "sex" varchar, 
    "Dob" varchar, 
    "Mobilenumber" varchar, 
    "Emailid" varchar, 
    "RegnFacilityid" varchar);