C語言呼叫mysql儲存過程出錯

2021-05-22 03:22:02 字數 1962 閱讀 1407

儲存過程語句如下:(區分大小寫)

mysql>delimiter $$

mysql>create procedure sp(age_i int)

->begin

->select *

->from * first

->where age=age_i;

->end $$

mysql>delimiter ;

在mysql裡呼叫這個儲存函式 mysql>call sp(12);

+----+--------+------+------+

|id    | name   | age   |  ***  |

------+--------+------+-------+

3         mou      12       f

現在想用

c語言呼叫這個儲存過程。**如下。

#include

#include

#include

#include

//#include "winsock2.h"

void main()

else

printf("/n");//換行

} if(mysql_errno(&my_connection))

} }

mysql_free_result(res_ptr); }

mysql_close(&my_connection); }

出現錯誤:

select error: procedure abccs.sp can』t return a result set in the given context

有兩個錯誤原因,一是儲存過程的引數設定不對,它的預設形式是in,而我的目的是需要它返回結果給呼叫它的函式,所以應該是out或inout。二是mysql_query()語句。 

儲存過程的正確定義是:

mysql->delimiter $$

mysql->create   procedure p(in age_i  int,out  ming varchar(25))

->begin

->select name  into ming  from  first   where  age=age_i;

->end  $$

mysql->delimiter ;

c語言**:

#include

#include

#include

#include

void main()

else

printf("/n");//

換行}

if(mysql_errno(&my_connection))}}

mysql_free_result(res_ptr);//釋放資源

}mysql_close(&my_connection);//關閉連線

}

MySQL呼叫儲存過程

使用儲存過程,可以使程式執行效率更高,安全性更好,增強程式的可重用性和維護性 儲存過程有多種呼叫方法 儲存過程必須使用call語句呼叫,並且,儲存過程和資料庫相關,如果,要執行其他資料庫中的儲存過程,需要指定資料庫名稱 語法格式 call sp name parameter sp name,為儲存過...

C 呼叫儲存過程

string sconnectionstring server local sqlexpress database forum trusted connection true 04 using sqlconnection conn new sqlconnection sconnectionstrin...

C 呼叫儲存過程

這次專案的數量級在1000萬,所以需要對資料的操作進行優化,儲存過程可以大大減少資料通訊量,其他的優化倒不知道在 有優化的地方 首先要在sqlserver裡面新建儲存過程 右鍵新建即可 使用的命令是 create proc your proc name create proc dbo doinser...