c調用存儲過程參數類型
⑴ 如何通過c或c++調用存儲過程
給個例子給你看下:
...
_CommandPtr m_cmdptr;
m_cmdptr.CreateInstance(__uuidof( Command ) );
_ParameterPtr inParam2=NULL;
_ParameterPtr inParam3=NULL;
_ParameterPtr inParam4=NULL;
_ParameterPtr outParam1=NULL;
_ParameterPtr outParam2=NULL;
_ParameterPtr outParam3=NULL;
inParam2.CreateInstance(__uuidof(Parameter));
inParam3.CreateInstance(__uuidof(Parameter));
inParam4.CreateInstance(__uuidof(Parameter));
outParam1.CreateInstance(__uuidof(Parameter));
outParam2.CreateInstance(__uuidof(Parameter));
outParam3.CreateInstance(__uuidof(Parameter));
m_cmdptr->ActiveConnection=m_pConnection;
m_cmdptr->CommandType=adCmdStoredProc;
m_cmdptr->CommandText=_bstr_t("proc_XXX");//存儲過程的名稱
//輸入參數
inParam2=m_cmdptr->CreateParameter(_bstr_t("@P1"),adVarChar,adParamInput,32,_bstr_t(P1));
m_cmdptr->Parameters->Append(inParam2);
inParam3=m_cmdptr->CreateParameter(_bstr_t("@P2"),adVarChar,adParamInput,20,_bstr_t(P2));
m_cmdptr->Parameters->Append(inParam3);
//輸出參數
outParam1=m_cmdptr->CreateParameter("@P4",adInteger,adParamOutput,sizeof(int));
m_cmdptr->Parameters->Append(outParam1);
outParam2=m_cmdptr->CreateParameter("@P5",adInteger,adParamOutput,sizeof(int));
m_cmdptr->Parameters->Append(outParam2);
outParam3=m_cmdptr->CreateParameter(_bstr_t("@P6"),adVarChar,adParamOutput,20,_bstr_t(P6));
m_cmdptr->Parameters->Append(outParam3);
//執行
m_cmdptr->Execute(NULL,NULL,adCmdStoredProc);
//取返回值
long p1=m_cmdptr->Parameters->GetItem("@P4")->Value;
long p2=m_cmdptr->Parameters->GetItem("@P5")->Value;
VARIANT vtP6 =m_cmdptr->Parameters->GetItem("@P6")->Value;
if (vtP6.vt != VT_NULL)
strcpy(tp,(_bstr_t)vtP6);
m_cmdptr.Detach;
⑵ c程序該怎麼樣調用oracle存儲過程並獲取存儲過程中的輸出參數的值
我以前這樣用pro*c 這樣玩的,僅供參考
EXEC sql EXECUTE
DECLARE
lsid varchar2(60);
lss_this_error_code number;
BEGIN
proctest(:ls_name,lsid); --ls_name 輸入參數 lss_id 輸出
:chId := lsid;-- lsid 輸出返回給C變數chId
END;
END-EXEC;
⑶ 求解C#調用ORACLE存儲過程的問題,出現錯誤 ora-06550好像是參數類型和參數個數的問題,我都試N次了。
原來是在.net中,ms為oracle提供的oledb介面有問題,換成oracle自己的就沒有問題了
?? 找來的答案
⑷ C# 怎麼調Mysql帶inout參數的存儲過程
string MyConString = "..."
OdbcConnection conn = new OdbcConnection(MyConString);
conn.Open();
OdbcCommand cmd = new OdbcCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcere;
cmd.CommandText = "p_test";
OdbcParameter p1 = new OdbcParameter("t_count", OdbcType.Int);
p1.Direction = ParameterDirection.Output;
cmd.Parameters.Add(p1);
int i = cmd.ExecuteNonQuery();
TextBox1.Text = p1.Value.ToString();
conn.Close();
⑸ C語言 怎麼 調存儲過程
C語言里沒有存儲過程,只有函數,函數調用有兩種方式
傳值調用(call by value)和傳址調用(call by reference)
例如
f1(x)
{
int a;
a=3*1-1;
f2(x,a);
return a+x;
}
f2(int r,int s)
{
int y;
y=2*r+1;
s=x*r;
r=s-y;
return;
}
f1中調用了f2函數,若第一個參數採用傳值方式(無返回值,即f1中x=3 不變,只是把值傳給f2使用而已)第二個參數採用傳址方式(返回的是s的地址引用,即f1中a的值與f2中s的值相等)若x=3,則a+x=24
⑹ 如何調用存儲過程,有返回值的,有參數的,存儲過程中調用存儲過程
create procere proc_a as declare b int; c varchar2(10); begin proc_b(b, c); dbms_output.put_line (c); end procere a; 你照我這個寫吧 proc_b(b, c); proc_b是你調用的帶返回參數的存儲過程 b是輸入變數,c是輸出變數
⑺ 使用OCI介面調用存儲過程
cstaticCallableStatement唯嘩callprol2(Stringsql,Stringinparameters[],Integeroutparameters[]){
conn=getConn();
try{
cs=conn.prepareCall(sql);
if(inparameters!=null){
for(int指扮行i=0;i<inparameters.length;i++){
cs.setObject(i+1,inparameters[i]);
}
}
//
//給out參缺哪數賦值
if(outparameters!=null){
for(inti=0;i<outparameters.length;i++){
cs.registerOutParameter(inparameters.length+1+i,outparameters[i]);
⑻ 求大神:C語言如何執行SQL sever的存儲過程
執行帶參數的存儲過程的方法如下:
Exec sp_configure 'allow updates',1 --允許更新系統表。
exec dbo.User_ChangeObjectOwnerBatch 'OldOwner','dbo'
以上是兩個例子。
SQL Server中執行帶參數的存儲過程的方法是:
EXEC 存儲過程名字 '參數1','參數2',數值參數
EXEC 是一個關鍵字。
字元串參數使用單引號括起來,數值參數不需要使用單引號