2011-04-15 68 views
0

我刚开始工作/学习存储过程。我只是想知道商店过程是否有可能返回一个字符串。存储过程返回/结果字符串

现在我正在处理的存储过程需要一个参数(客户#)并返回两个字段 - 车辆#和ETA。我只是想知道这是否可以放在一个字符串上,例如“您的车辆#在12分钟内与ETA在1234。”。或者如果没有返回值,则返回某种类型的消息。

在此先感谢。

+0

这当然是可能的 - 虽然访问这些数据将取决于两个版本的SQL您正在使用(如MySQL和SQL服务器),并在该技术所使用的访问数据(例如, ado.net)。添加这些信息,你会得到更好的答案。 – 2011-04-15 23:52:36

+0

什么数据库?存储过程语法在不同的RDBMS之间有所不同。 – 2011-04-15 23:53:09

+0

谢谢你们。它是MS SQL服务器。 – eggman20 2011-04-15 23:55:58

回答

0

那么,一旦我回到一个完整的链接:)在MSSQL中,例如,你可能首先声明一个结果表中的过程,在你可以做下面的语句的程序结束:

SELECT 'whatever string you want to put' + columnName + ' whatever...' FROM @result 

其中@result是声明的表格

编辑:其中columnName类型为INT的情况下,您可以使用CONVERT函数。希望这可以帮助。

0

对于SQL Server,它是作为下面的代码那样简单:

select 'Your vehicle # is ' + vehiclenum + ' with ETA in ' eta ' minutes' from table_1 
where your_select_criteria 

在该SQL vehiclenum和ETA是从TABLE_1两列名,但你可以做同样在此查询的联接。

如果vehiclenum是一个整数,那么你需要使用转换功能,像这样将它转换:

select 'Your vehicle # is ' + convert(varchar(10), vehiclenum) + ' with ETA in ' eta ' minutes' 
from table_1 
where your_select_criteria 

拼图的最后一块是越来越值伸到代码。事实上,这将返回一个记录集。

使用SqlClient,您可以使用描述为here on MSDN的ExecuteScalar方法。

var outputText = cmd.ExecuteScalar(); 
2
CREATE PROCEDURE GetVehicleInfo 
@CustId INT 
OUTPUT AS 

    RETURN (SELECT 'Your vehicle # is ' + id + ' with ETA in ' + ETA + ' minutes' 
      FROM YourTable WHERE CustId = @CustId) 

GO