मैं डेटाबेस क्वेरी से एक पूर्णांक प्राप्त करना चाहता हूं:

SELECT CAST(concat('id_',substr_of_jointable) AS INTEGER) into integervalue 
  FROM books_authors where id_books = booksvalue 
  ORDER BY id_books DESC 
  LIMIT 1;

subsr_of_jointable एक टेक्स्ट है जिसका मान authors है। हालांकि मुझे हमेशा एक त्रुटि मिलती है:

त्रुटि org.hibernate.engine.jdbc.spi.SqlExceptionHelper - त्रुटि: पूर्णांक के लिए अमान्य इनपुट सिंटैक्स: "id_authors"
Wobei: SQL कथन "चयन करें CAST(concat('id_',substr_of_jointable) AS INTEGER) Books_authors से जहां id_books =books_value id_books DESC LIMIT 1 द्वारा ऑर्डर करें"
PL/pgSQL फ़ंक्शन Books_ins_trig_proc() पंक्ति 125 SQL कथन पर at

क्या किसी के पास कोई विचार है क्यों? कॉलम id_books id_authors डेटाबेस में एक पूर्णांक मान है।

1
Dennis 4 फरवरी 2020, 11:45

1 उत्तर

सबसे बढ़िया उत्तर

मान लें कि आप पीएल/पीजीएसक्यूएल फ़ंक्शन के अंदर एक गतिशील क्वेरी बनाने का प्रयास कर रहे हैं, तो आप इस दृष्टिकोण पर एक नज़र डालना चाहेंगे।

डेटा नमूना

CREATE TABLE t (id_authors INT);
INSERT INTO t VALUES (1);

समारोह

CREATE OR REPLACE FUNCTION myfunction(TEXT) RETURNS INT 
LANGUAGE 'plpgsql' AS $BODY$
DECLARE i INT;
BEGIN
  EXECUTE 'SELECT id_'|| $1 ||' FROM t LIMIT 1;' INTO i;
  RETURN i;
END;
$BODY$;

यह उदाहरण केवल यह दिखाने के लिए है कि आप अपनी डायनामिक क्वेरी के अंदर एक कॉलम नाम बनाने के लिए अपने स्ट्रिंग्स को कैसे जोड़ सकते हैं।

फ़ंक्शन को कॉल करना

SELECT * FROM myfunction('authors');

 myfunction 
------------
          1
(1 Zeile)

आगे की पढाई:

1
Jim Jones 4 फरवरी 2020, 12:46