zoukankan      html  css  js  c++  java
  • 获得SQL语句或存储过程的返回值方法

    1、使用Sp_executeSql执行SQL,用输出参数获得其变量

        declare @val varchar(100)
        
    declare @Sql nvarchar(4000)
        
    set @Sql = 'Set @val=5' 
        
    exec Sp_executeSql @Sql, N'@val varchar(100) output',@val output
        
    select @val as Value

     其中@Sql字符串,必须为 ntext/nchar/nvarchar三种类型中的一种,否则会出错

    (以下摘自CSDN)

     2、在存储过程中使用RaisError,传回错误讯息

      IF @@Error<>0 

      RaisError '更新数据时错误',16,1

      return

     如果执行间段错误,傳回使用者自訂的錯誤訊息,並設定系統旗標,記錄曾發生過錯誤。

    VB6用戶端获取错误信息:

    On Error GoTo ErrDo 

    .......

    ErrDo:
        MsgBox "保存數據出錯: " & Err.Description   

    3、 使用output参数
    代码
    IF OBJECT_ID ( 'Production.usp_GetList''P' ) IS NOT NULL 
        
    DROP PROCEDURE Production.usp_GetList;
    GO
    CREATE PROCEDURE Production.usp_GetList @product varchar(40
        , @maxprice money 
        , @compareprice money OUTPUT
        , @listprice money OUT
    AS
        
    SELECT p.name AS Product, p.ListPrice AS 'List Price'
        
    FROM Production.Product p
        
    JOIN Production.ProductSubcategory s 
          
    ON p.ProductSubcategoryID = s.ProductSubcategoryID
        
    WHERE s.name LIKE @product AND p.ListPrice < @maxprice;
    -- Populate the output variable @listprice.
    SET @listprice = (SELECT MAX(p.ListPrice)
            
    FROM Production.Product p
            
    JOIN  Production.ProductSubcategory s 
              
    ON p.ProductSubcategoryID = s.ProductSubcategoryID
            
    WHERE s.name LIKE @product AND p.ListPrice < @maxprice);
    -- Populate the output variable @compareprice.
    SET @compareprice = @maxprice;
    GO

    另一个存储过程调用的时候:

    DECLARE @compareprice money, @cost money
    EXECUTE Production.usp_GetList '%Bikes%', 700,
        @compareprice OUT,
        @cost OUTPUT
    SELECT  @compareprice,@cost

    4、创建一个临时表

    #tempTable (userName nvarchar(50))
    insert into #tempTable(userName)
    exec GetUserName

    select #tempTable

    --用完之后要把临时表清空
    drop table #tempTable

    如有其它问题请加我的微信:x7993794,请注明“软考”,或加入我群组[软考数据库]微信讨论群
  • 相关阅读:
    Git——版本管理工具(一)
    【转载】Linux cgroup资源隔离各个击破之
    【转载】Linux cgroup资源隔离各个击破之
    【SSD,FIO,SAS选择的一些小结】SSD,FIO,SAS选择的一些小结
    【转载】MySQL5.6.27 Release Note解读(innodb及复制模块)
    【转载】mysql主键的缺少导致备库hang
    【转载】备库由于表无主键导致延迟
    [转载]阿里云MySQL优化主从同步,降低数据延迟
    [转载]mysql中实现行号,oracle中的rowid
    [转载]常见slave 延迟原因以及解决方法
  • 原文地址:https://www.cnblogs.com/fredx/p/1737418.html
Copyright © 2011-2022 走看看