테스트 사이트 - 개발 중인 베타 버전입니다

프로시저 사용법좀 알려주십시오

· 11년 전 · 804 · 2
php에서 asp프로시저에 연결하려하는데 도무지 해결이 안됩니다. 

아래는 샘플입니다. 

$key1 xml 형식으로 처리하는 구문입니다. 
$key2 ''처리에 문제가 있나 싶은데 구글링해봐도 잘모르겠네요 

mssql_execute($stmt); 오류가 납니다. 
Warning: mssql_execute() [function.mssql-execute]: stored procedure execution failed in 


$Key1="N'<ROOT> 
<DataBlock></DataBlock> 
</ROOT>'"; 
$Key2="N''"; 



디비에서 직접 아래와 같이 쿼리를 하면 정상적입니다. 

exec 프로시저명 @Key1=N'<ROOT> 
<DataBlock></DataBlock> 
</ROOT>',@Key2=N'',@Key3=1


아래는 전체 소스입니다.

<?php 
$hostName=""; 
$userName=""; //mssql id 
$password="";//mssql pass 
$dbName="";//mssql db 


$conn=mssql_connect($hostName,$userName,$password); 

if ($conn) { 
    mssql_select_db($dbName,$conn); 
    $stmt=mssql_init("프로시저명",$conn);//프로시저명 
    
   $Key1="N'<ROOT>
<DataBlock1></DataBlock1>
</ROOT>'";
   $Key2="N''";
   $Key3=1;

    mssql_bind($stmt,"@Key1",$Key1,SQLVARCHAR); 
    mssql_bind($stmt,"@Key2",$Key2,SQLVARCHAR); 
    mssql_bind($stmt,"@Key3",$Key3,SQLINT2); 


    
    $result=mssql_execute($stmt); 
    $arr=mssql_fetch_row($result); 

echo"$arr[Key1]"; 
    
    mssql_close($conn); 
}else{echo"연결실패";} 
?> 

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 2개

11년 전
우선 phpinfo() 이용하여 mssql 확장되어 있는지 확인 해봐야합니다.
없으면 패치확장하구요 현재 위 방식 보니 php4 혹은 php5 최신 버전 아닌것 같습니다.
php5라면 pdo 추천합니다.
모든 sql 명령어 바뀌지 않은 상태에서 다양한 디비로 쉽께 바꿀수있습니다.
답변 감사합니다.
mssql 확장 확인했습니다.
실 디비에서 데이타를 가져오는것도 처리했구요... 프로시저쪽 접근하는게 에러가 나는상황입니다.
pdo쪽은 안해봤는데 찾아봐야겠네요

게시글 목록

번호 제목
8265
20403
20402
20401
20400
8259
20399
20398
8255
8249
8246
8242
20396
8240
20395
20394
31033
28385
20393
28380
20392
28377
20391
20390
20389
20388
20387
20386
20385
20384
20383
20382
8238
20380
20379
28376
28372
20378
20377
8235
20375
20374
20373
20372
20371
20370
28370
20369
28366
20368
20367
20366
20365
20364
20363
20362
20361
20360
20359
8231
20358
20357
20356
20355
20354
20353
20352
20351
20350
20349
20348
20347
20346
20345
20344
20343
20342
20341
20340
20339
20338
20337
20336
20335
20334
20333
20332
20331
20330
20329
20328
20327
20326
20325
20324
20323
20322
20321
20320
20319