2016-04-29 84 views
0

这里我创建了一个使用json_populate_recordset函数的类型。使用json_populate_recordset函数的Postgres问题

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); 

以下示例SQL和JSON用于:

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" 
    }]'); 

的问题是,它返回空值的所有字段,除了然后dobstatussex

+0

我可以看到实际的值,当我查询..但是一旦我在(使用SELECT * FROM json_populate_recordset (null :: visits_type,visit_info - >'访问')) LOOP ..我得到错误i.patientID字段不可用。我是用双引号创建的TYPE型visit_type –

回答

1

当你创建你的类型,以保持原来的情况下,你应该使用双引号:

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);