'저장프로시저'에 해당하는 글 2건

////////////////////

void CADOTestDlg::OnButtonGetField()
{
    // TODO: Add your control notification handler code here
    _RecordsetPtr  pRs = NULL;    
    _bstr_t        str_Query;
    _bstr_t        bstr_Field;
    HRESULT   hr = S_OK;
   
    int i_RecCount;
    int i = 0;
   
    str_Query = "EXEC USP_SELECT_PARENT";
    pRs.CreateInstance(__uuidof(Recordset));

    pRs->CursorLocation  = adUseClient;   
    hr = pRs->Open((_variant_t)str_Query,_variant_t((IDispatch *)pConnection,true), adOpenKeyset,adLockReadOnly, adCmdText);
   
    i_RecCount = pRs->RecordCount;                
       
   
    if(SUCCEEDED(hr))
    {
        for(i ;i < i_RecCount ;i++)        
        {
             
            bstr_Field = pRs->Fields->GetItem((LONG)0)->GetValue();
            TRACE("\n ID : %s",(LPCTSTR)bstr_Field);           

            bstr_Field = pRs->Fields->GetItem((LONG)1)->GetValue();
            TRACE("\n NAME : %s",(LPCTSTR)bstr_Field);           
  
            pRs->MoveNext();
        }
    }

   

    pRs->Close();   
}
/////////////////////////////////////////
 
아~~~
내 인생에도 C++의 흔적을 남겨야 하는가...
너무 싫다 C++ 누가 좀 도와도~~~ ㅠ.ㅠ

[출처] 데브피아
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNo=20&no=240916&ref=240800

/* 요것도 참고 해 보자 */

예전에 ASP 에서 하던 코드를 대충 적용 했는데 작동은 잘 되는듯 합니다..
/////////////
_CommandPtr   pCmd = NULL;

pCmd.CreateInstance(__uuidof(Command));
pCmd->ActiveConnection = pConnection;
pCmd->CommandText = "UP_TEST";
pCmd->CommandType  = adCmdStoredProc;

//리턴값 파라미터  추가 합니다       
pCmd->Parameters->Append(pCmd->CreateParameter("return",adInteger,adParamReturnValue,4));
               
hr = pCmd->Execute(NULL,NULL,NULL);
 if(SUCCEEDED(hr))
{
        pCmd->GetParameters()->GetItem("return")->Value;  //-> 리턴값을 받아 옴...
  }       

//////////////////////
참고로  예전에 ASP 에서는 다음과 같이 했었음다...

 Set DBCmd = Server.CreateObject("ADODB.Command")
   with DBCmd
      .ActiveConnection  = DBcon
      .CommandType  = adCmdStoredProc
      .CommandText  = "cvl_sp_s_delschool"
      .Parameters.Append DBCmd.CreateParameter("return",adInteger ,adParamReturnValue ,4)                 
      .Parameters.Append DBCmd.CreateParameter("@UID",adChar , adParamInput ,10,USER_ID)
      .Parameters.Append DBCmd.CreateParameter("@Sch_cd",adChar , adParamInput,8,SCH_CODE)     
      .Parameters.Append DBCmd.CreateParameter("@re_msg",adVarChar,adParamOutput,50)               
      .Execute      
     i_return = .Parameters("return").Value
     s_msg =    .Parameters("@re_msg").Value   
     
   End with
  
  Set DBCmd = Nothing

위와 같이 하면 리턴값과 함께 아웃풋 파라미터로도 값을 받아 올수 있습니다... 
 
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNo=20&no=233967&ref=233794


이왕 한 김에... C#에서도 저장프로시저 사용법 알아볼까?
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=17&MAEULNo=8&no=73596&ref=73596


WRITTEN BY
테네시왈츠
항상 겸손하게 항상 새롭게 항상 진실하게

,

PROCEDURE   *OUTPUT 사용법

CREATE PROCEDURE  sp_zul_account
/*
 절부분 결제 부분입니다.
 결제함과 동시에 절에 보시했다는 정보를 보관합니다.
*/


@member_id varchar(50) ,
@zul varchar(50)  ,
@comment varchar(200) ,
@cash  int ,
@result int output

 AS

 Declare @i varchar(50)
 --실직적인 결제를 하는부분

--또다른 저장프로시저
 exec sp_account @member_id ,@comment  , @cash , @i output 
 
 if( @i ='1' )
  begin
   --절에대한 정보를 넣어줍니다
   insert into dbo.zul_love_account(zul , member_id , makedate ) values( @zul , @member_id   , getdate() )
   SET @result='1'
  end
 else
  begin
   SET @result='2'
  end
GO


 

 

 

asp 코드

 

set Command1 = Server.CreateObject("ADODB.Command")
Command1.ActiveConnection = MM_DBconn_STRING
Command1.CommandText = "dbo.sp_zul_account"
Command1.Parameters.Append Command1.CreateParameter("@member_id", 200, 1,50,member_id)
Command1.Parameters.Append Command1.CreateParameter("@zul", 200, 1,50,zul)
Command1.Parameters.Append Command1.CreateParameter("@comment", 200, 1,50,comment)
Command1.Parameters.Append Command1.CreateParameter("@cash", 3, 1,4,cash)
Command1.Parameters.Append Command1.CreateParameter("@result", 3, 2,4)
Command1.CommandType = 4
Command1.CommandTimeout = 0
Command1.Prepared = true
Command1.Execute()


if Command1.Parameters.Item("@result").Value <>"1" then
 response.write "<script>"
 response.write "alert('결제금액이 부족합니다');"
 response.write "history.back(-1);" 
 response.write "</script>"
 response.End()
else
 response.Cookies("zul")=zul

 
 response.Redirect("/account/account_end.asp")
end if

 

------------------------------------------------------------------------------------------

두개이상의 결과값 받기

------------------------------------------------------------------------------------------

*위에랑 별 차이 엄따 2개란거 말고는 ㅋㅋ

데이타베이스

CREATE PROCEDURE sp_get_login_profile
@member_id varchar(50) ,
@love int output ,
@memo int output
 AS


 select @memo=Count(*) from  memo_receive where memo_to =@member_id  and read_class='2'
 select  @love=cash from member_config where member_id=@member_id

print @memo
GO


 

 

asp 코드

<%

set Command1 = Server.CreateObject("ADODB.Command")
Command1.ActiveConnection = MM_DBconn_STRING
Command1.CommandText = "dbo.sp_get_login_profile"
Command1.CommandType = 4
Command1.CommandTimeout = 0
Command1.Prepared = true
Command1.Parameters.Append Command1.CreateParameter("@member_id", 200, 1,50,member_id)
Command1.Parameters.Append Command1.CreateParameter("@love", 3, 2,4)
Command1.Parameters.Append Command1.CreateParameter("@memo", 3, 2,4)
Command1.Execute()
%>

 

<%= Command1.Parameters.Item("@love").Value %>

<%= Command1.Parameters.Item("@memo").Value %>

 

 

------------------------------------------------------------------------------------------

쿼리문자열을 만들어서 프로시저안에서 실행하기

------------------------------------------------------------------------------------------

 

CREATE PROCEDURE sp_get_soc_newwrite


@board_type int ,
@top int

AS

DECLARE @sql varchar(200)

set @sql=' select top '+convert( varchar(50)  ,@top)+'  *  from soc_board where board_type ='''+convert(varchar(50) , @board_type)+''' '

exec (@sql)


GO

[출처] 간단한 저장프로시저 예제|작성자 yo9lee

http://blog.naver.com/yo9lee?Redirect=Log&logNo=100070867875

'020. Prigraming > 10. Web' 카테고리의 다른 글

[Flutter] 지뢰찾기  (0) 2022.11.25
[Flutter] 공부를 시작하지  (0) 2022.08.13
asp.net과 플래시 변수 연동(디비까지)  (0) 2010.04.06
[PHP] my-sql DB 연결하기  (0) 2010.03.01
[ASP] DB(Oracle, ms-sql) 연결 소스  (2) 2010.03.01

WRITTEN BY
테네시왈츠
항상 겸손하게 항상 새롭게 항상 진실하게

,