CREATE PROCEDURE jing @aName Char(40) @aStr Char(1)
OutPut AS IF @aName = '古董' BEGIN @aStr = 'Y' END SELECT *
FROM Glass_Price
WHERE Price_Name = @aName
GO这样一个存储过程在SQL Server 2000里编译没有通过!请教错在那儿!
另外:请问,同样一个Insert语句带十几个参数,是放在程序里执行效率高呢?还是写成存储过程,在程序里调用效率高!
OutPut AS IF @aName = '古董' BEGIN @aStr = 'Y' END SELECT *
FROM Glass_Price
WHERE Price_Name = @aName
GO这样一个存储过程在SQL Server 2000里编译没有通过!请教错在那儿!
另外:请问,同样一个Insert语句带十几个参数,是放在程序里执行效率高呢?还是写成存储过程,在程序里调用效率高!
解决方案 »
- UTF8ToAnsi函数返回空
- ●●●【哪里有《魔兽争霸III冰封王座1.18》英文版下载?】●●●
- 问一个文件的问题!请大家指教!
- 用UDPServer收发数据,如果何知道对方有没有收到,如果没有收到责再次发送?
- 要做一个数据采集服务器端,用TCP实现接收客户端的采集请求...请看内容
- 图片流压缩急问!!!
- 怀疑倒分,大斑竹来处理下,即使没有找到答案或者自己完成也不要这么做。
- vclskin如何设置才能支持ehlib中的DBGridEh
- 如何在按钮上添加超链接啊! 高手来!
- 哪位大虾做过外壳程序?
- FileExists(String:FileName)有关此函数中,文件名数径问题
- 有没有高手呀,这个问题都解决不了?!!!!!!
Adoquery.sql.add(sSQL)//-------以上的语句
问题是:@aStr Char(1)这个返回参数怎么样取出来!
@aName Char(40) ,
@aStr Char(1) OutPut
AS
IF @aName = '古董'
BEGIN
select @aStr = 'Y'
END
SELECT * FROM Glass_Price WHERE Price_Name = @aName
return
CREATE PROCEDURE jing @aName Char(40), @aStr Char(1)
OutPut AS
IF @aName = '古董'
BEGIN
select @aStr = 'Y'
END
SELECT *
FROM Glass_Price
WHERE Price_Name = @aName
go
declare @str char(1)
exec jing 'aa', @str output
select @str
edit1.text:=adostroproc.params[1].value;//1为参数序号
在Adoquery中连接此存储过程也会有两个参数,第二个就是你要的输出参数
即edit1.text:=adoquery.params[1].value
CREATE PROCEDURE jing
@aName Char(40)
,@aStr Char(1) OutPut
AS
IF @aName = '古董'
@aStr = 'Y'
ELSE
@aStr = 'N'
SELECT * FROM Glass_Price WHERE Price_Name = @aName
GO
-----------------------------
当ADOQuery被执行后,它的Parameters.ParamByName('@aStr').Value 就会返回Y或N了
-------------------------
另外:请问,同样一个Insert语句带十几个参数,是放在程序里执行效率高呢?还是写成存储过程,在程序里调用效率高
明确地告诉你,放在存诸过程里效率高,高得多,我测试过的,速度提高N倍。
sSQL:='Exec Jing ''古董'','''' ';
with Frm_Data.ADOQuery do
begin
Close;
SQL.Clear;
SQL.Add(sSQL);
Open;
a:=Frm_data.ADOQuery.Parameters.ParamByName('@aStr').Value ;///------这儿报错!说@aStr没有找到!我换了aStr也试过了,也是这样!
ShowMessage(a);
在调用存储过程时,如果该存储过程不返回数据集,最好用ADOCommand,这是效率最高的,就算是要返回数据集,只要不是非得让它兼容TDataSet(也就是说不需要绑定数据敏感控件)的话,用ADOCommand也是最好的,它会返回_Recordset。
言归正转:
ADOCommand1.CommandType := cmdStoreadProc; //是调用存储过程
ADOCommand1.CommandText := 'jing'; //存储过程名是jing
ADOCommand1.Parameters.Refresh; //从服务器取得参数详情
ADOCommand1.Parameters.ParamByName('@aName').Value := 'xxxx';
ADOCommand1.Parameters.ParamByName('@aStr').Value := ' ';
ADOCommand1.Execute;
ShowMessage(ADOCommand1.Parameters.ParamByName('@aStr').Value);
如果确实要用adoquery ,则:
with adoquery1 do
begin
sql.Clear;
sql.Add('declare @str char(1)');
sql.Add('exec jing ''古董'', @str output');
sql.Add('select @str');
open;
end;
showmessage(adoquery1.Fields[0].value);