先改正第一个错误:将out 改为outputCREATE PROCEDURE [dbo].[usp_GetSampleTestInfo] 
@ic_PatientCardID  varchar(24),
  @oi_ErrorID int=0 output,
        @oc_ErrorText varchar(100)='' output     
AS

解决方案 »

  1.   

    DECLARE @SequenceID  varchar(500)
    set @SequenceID =''
    SELECT @SequenceID =@SequenceID +SequenceID FROM LE_SamplingM WHERE PatientCardID = @ic_PatientCardID
      

  2.   

    CREATE PROCEDURE [dbo].[usp_GetSampleTestInfo] 
    @ic_PatientCardID varchar(24),
      @oi_ErrorID int=0 out,   --错误ID<>0 - 出错; 错误ID=0 - 执行成功
             @oc_ErrorText varchar(100)='' out     --错误信息      
    ASSET NOCOUNT ONDECLARE @SequenceID  varchar(500)
    set @SequenceID=''
    SELECT @SequenceID =@SequenceID+SequenceID FROM LE_SamplingM WHERE PatientCardID = @ic_PatientCardIDSELECT * FROM LE_SamplingD WHERE SequenceID = @SequenceIDIF (@@error<>0)
    BEGIN
    SELECT @oi_ErrorID=-1,@oc_ErrorText='修改结果出错!'
    GOTO Error_Quit
    ENDError_Quit:
    IF(@oi_ErrorID <> 0)
    SELECT @oi_ErrorID AS ErrorID,@oc_ErrorText AS ErrorText
    GO
      

  3.   

    大意了,应该是:CREATE PROCEDURE [dbo].[usp_GetSampleTestInfo] 
    @ic_PatientCardID varchar(24),
      @oi_ErrorID int=0 out,   --错误ID<>0 - 出错; 错误ID=0 - 执行成功
             @oc_ErrorText varchar(100)='' out     --错误信息      
    ASSET NOCOUNT ONDECLARE @SequenceID  varchar(500)
    set @SequenceID=''
    SELECT @SequenceID =@SequenceID+SequenceID FROM LE_SamplingM WHERE PatientCardID = @ic_PatientCardIDdeclare @sql varchar(100)
    set @sql='SELECT * FROM LE_SamplingD WHERE SequenceID in ('''+@SequenceID+''')'
    exec(@sql)IF (@@error<>0)
    BEGIN
    SELECT @oi_ErrorID=-1,@oc_ErrorText='修改结果出错!'
    GOTO Error_Quit
    ENDError_Quit:
    IF(@oi_ErrorID <> 0)
    SELECT @oi_ErrorID AS ErrorID,@oc_ErrorText AS ErrorText
    GO
      

  4.   

    或者这样:
    alter PROCEDURE [dbo].[usp_GetSampleTestInfo] 
    @ic_PatientCardID varchar(24),
      @oi_ErrorID int=0 out,   --错误ID<>0 - 出错; 错误ID=0 - 执行成功
             @oc_ErrorText varchar(100)='' out     --错误信息      
    ASSET NOCOUNT ONSELECT * FROM LE_SamplingD
    WHERE SequenceID in (select SequenceID from LE_SamplingM where PatientCardID = @ic_PatientCardID)IF (@@error<>0)
    BEGIN
    SELECT @oi_ErrorID=-1,@oc_ErrorText='修改结果出错!'
    GOTO Error_Quit
    ENDError_Quit:
    IF(@oi_ErrorID <> 0)
    SELECT @oi_ErrorID AS ErrorID,@oc_ErrorText AS ErrorText
    GO
      

  5.   

    如果是只要这么简单的数据,那么其实直接抓取sp的返回值,而不需要用一个变量返回create PROCEDURE [dbo].[usp_GetSampleTestInfo] 
    @ic_PatientCardIDvarchar(24)    
    ASSET NOCOUNT ONSELECT * FROM LE_SamplingD
    WHERE SequenceID in (select SequenceID from LE_SamplingM where PatientCardID = @ic_PatientCardID)IF (@@error<>0)
    Return 1--表示出错
    else
    Return 0--表示执行成功GO那么调用时候,就可以先判断return值,然后再确定时候是出错还是可以抓取出来数据
    declare @results as int
    exec @results =  [dbo].[usp_GetSampleTestInfo] '###'
    print @results --在sql server测试