मुझे समस्या है कि मेरे पास पोस्टग्रेस्क्ल में एक फ़ंक्शन है जो दो पूर्णांक की गणना करता है और परिणाम को C# (npgsql) conosle पर वापस कर देना चाहिए और मुझे नहीं पता कि मेरी गलती कहां है, क्योंकि डीबगर नहीं कहता है मेरे लिए कुछ भी जो सहायक है।सी # में postgresql फ़ंक्शन के परिणाम को वापस कैसे करें? कंसोल आउटपुट खाली
तो सी # और फ़ंक्शन के सभी कोडों में से पहला।
...
cmd.Parameters["x"].Value = 20;
cmd.Parameters["y"].Value = 22;
connection.Open();
if (connection.State == System.Data.ConnectionState.Open) {
//Console.WriteLine(cmd.Parameters["x"].Value);
command.ExecuteNonQuery();
Console.WriteLine(cmd.Parameters["sum"].Value);
}
और अब डीबी के कोड:
CREATE OR REPLACE FUNCTION t2(
IN x integer,
IN y integer,
OUT sum integer)
RETURNS integer AS
$BODY$BEGIN
sum := x + y;
INSERT INTO t2 (x, y, sum) values (x, y, sum);
END
तो जब मैं इसे चलाने का प्रयास,
Console.WriteLine(cmd.Parameters["sum"].Value);
खाली हो जाएगा और [ "योग"] मूल्य है। शून्य। मैं क्या गलत कर रहा हूं? क्या मैं सही हूं, जब मैं कहता हूं कि "योग" एक आउट वैरिएबल है, तो मुझे वापसी की आवश्यकता नहीं है?
कृपया मदद करें।
सोल्व, सभी को धन्यवाद! उपयोग ExecuteScalar() ExecuteNonQuery के बजाय()
आप वास्तव में आदेश को क्रियान्वित करने कर रहे हैं? मैं नहीं देख सकता कि आपके कोड में ... – mlinth
कमांड के साथ क्या आप फ़ंक्शन का मतलब रखते हैं? हाँ मैं करता हूं, लेकिन मुझे लगता है कि यह समस्या नहीं है? 'डीबीकॉमांड कमांड = कनेक्शन। क्रिएट कमांड(); कमांड। कमांडटेक्स्ट = "टी 2"; कमांड। कमांड टाइप = कमांड टाइप। स्टोर्डप्रोसेसर; ' –
अब पूर्ण कोड संपादित किया गया;) –