سؤال

أنا أستخدم Groovy Sql لجلب النتائج.هذا هو الناتج من صندوق Linux الخاص بي.

%isql -U abc -P abc -S support
1> sp_configure 'number of open partitions'
2> go
 Parameter Name                 Default     Memory Used Config Value    Run Value    Unit                 Type
 ------------------------------ ----------- ----------- ------------  ------------ -------------------- ----------
 number of open partitions              500        5201         5000          5000 number               dynamic

(1 row affected)
(return status = 0)
1>

أنا أستخدم كود رائع

def sql = Sql.newInstance("jdbc:abc:sybase://harley:6011;DatabaseName=support;",dbuname,dbpassword,Driver)
sql.eachRow("sp_configure 'number of open partitions'"){ row ->
        println row.run_value
    }

لكنه يعطيني

Exception in thread "main" java.sql.SQLSyntaxErrorException: [abc][Sybase JDBC Driver]Invalid column name: run_value

لذا تقول أنه لا يمكنه الحصول على الأعمدة المحددة، هل هناك طريقة لجلب النتيجة وعرضها؟

تحديث

لقد استخدمت الكود أدناه

sql.eachRow("sp_configure 'number of open partitions'"){ row ->
            println row
    }

ويعطيني

[Parameter Name:number of open partitions     , Default:        500, Memory Used:       5201, Config Value:        5000, Run Value:        5000, Unit:number              , Type:dynamic   ]

كيف يمكنني الحصول على Run Value؟(لأنه يحتوي على مساحة)

row.Run Value لن تعمل بالتأكيد

هل كانت مفيدة؟

المحلول

هل هذا فعال؟الاستعلام عن البيانات الوصفية لاسم العمود والحصول على القيمة حسب الفهرس:

sql.eachRow("sp_configure 'number of open partitions'"){ row ->
  (1..row.getMetaData().columnCount).each {
    println "${row.metaData().getColumnName( it )} = ${row[ it ]}"
  }
}

أو للحصول على العمود مباشرة

row.'Run Value'

نصائح أخرى

البديل الآخر هو getAt(int).في حالتك، سيُرجع هذا "قيمة التشغيل":

row.getAt(-3)

بالإضافة إلى إجابة @ tim_yates أود أن أشير إلى ذلك row لديه toRowResult() طريقة.يسمح بالحصول على صف ببساطة كخريطة.لا حاجة للاتصال getMetadata() إذا كنا بحاجة فقط إلى أسماء الأعمدة أو عرض الجدول.

sql.eachRow("sp_configure 'number of open partitions'"){ row ->
  row.toRowResult().each(){ colName, value ->
    println "${colName} = ${value}"
  }
}

يفعل هذا الرمز نفس الشيء تمامًا ولكنه يبدو أكثر وضوحًا

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top