今天,在SQL Server 2014中创建存储过程时,我注意到了一种奇怪的行为。下面是我的测试程序。请解释为什么Server不允许使用第一个SELECT进行编译,而允许使用第二个进行编译。
CREATE PROCEDURE [dbo].[test]
AS
BEGIN
SET NOCOUNT ON;
IF 1=0 -- this will never occur
BEGIN
select x from Table -- TABLE EXIST BUT COLUMN NOT - STORED PROCEDURE IS NOT CREATED
DELIMITER //
CREATE PROCEDURE Purchases (In orderID int)
BEGIN
SELECT orderId, orderdate, partNum,numOrdered,price
from hscust, hslineitem
where orderId = orderID;
end //
DELIMITER ;
我有一个免费的pascal应用程序使用Firebird。如何从此Firebird存储过程检索输出变量:
input parameters: ID (integer)
output parameters: G (integer)
begin
if(select town.count from town where town.id=:id) then
G = 100
else
G = 200;
suspend;
end
in designer->SQL
EXECUTE PROCEDURE ID_DEV :ID RETURNING_VALUES :G
代码:
SQ
在使用手动用户测试的QA中实现了代码错误,并且在调查时发现这是一个明显的错误。
CREATE PROCEDURE ProcedureA
@A INT
AS SELECT 1
GO
CREATE PROCEDURE ProcedureB
AS EXEC ProcedureA @B = 0
此外,手动执行这些CREATE语句不会引发任何错误。
另一个例子
CREATE VIEW VW_MyTestView AS
SELECT Column1 = 0
GO
CREATE PROCEDURE MyTestProcedure AS
SELECT Column1
FROM V
我正在努力从MySQL存储过程中获取结果OUT变量。我得到以下错误:
java.sql.SQLException: Parameter number 3 is not an OUT parameter
存储过程如下所示:
CREATE DEFINER=`cv_admin`@`localhost` PROCEDURE `CheckGameEligibility`(
IN gID INT(10),
IN uID INT(10),
OUT result TINYINT(1)
)
BEGIN
# Do lots of stuff, then eventually:
既然我似乎不能使用?在我们正在执行的更复杂的SQL语句中,我们在某处读到,您可以设置上一步来为您设置SQL。这是一个ActiveX步骤,它设置了步骤SQL语句和全局变量中的替换。
因此SQL步骤中有SELECT 0,它之前的步骤实际上是一个VB脚本,如下所示
‘205 (更改SourceSQLStatement)选项显式
函数Main() Dim oPkg、oDataPump、sSQLStatement
' Build new SQL Statement
sSQLStatement = "IF (SELECT 1 FROM TABLE fm WHERE NOT EXISTS (
我有一个sql查询,它在SQL Server中工作得很好,可以得出由特定供应商提供的商品的最后购买率,如下所示:
Select Top 1 Rate
From TXPurchaseDetail
Where CompanyCode = 200
And VoucherSeries = 'INPURSCR'
And SupplierCode = 1042
And ItemCode = 1521
And voucherdate <= '2011/05/25'
由于链接服务器不容易发送openrowset查询,所以我通过SQLCMD模式直接连接到远程Server。但是使用是可以的。当我将代码放入存储过程时,我甚至无法保存它:
:Connect x.x.x.x -U sa -P password
select *
from openrowset('VFPOLEDB','\\share\db\s_object.dbf';'';
'','SELECT * FROM s_object where i_class=21 order by 1')
在“:”附近有错误
根据某一行是否已经存在,我试图更新我的数据库。
在我的php文件中,我创建了以下字符串:
IF EXISTS(SELECT updown
FROM voted_source
WHERE ID = ? AND userID = ?)
BEGIN
UPDATE voted_source
SET updown = TRUE
WHERE ID = ?;
在雪花SQL存储过程中,我希望设置变量的值,如下所示:
DROP PROCEDURE IF EXISTS MY_DB.MY_SCHEMA.MY_SP_SQL();
CREATE PROCEDURE MY_DB.MY_SCHEMA.MY_SP_SQL()
RETURNS STRING NOT NULL
LANGUAGE SQL
AS
DECLARE
retValue VARCHAR;
BEGIN
SET retVal = '';
[...]
所有东西在编译时都会发生变化,但在运行时会失败,但有以下例外
位置y处x行类型'STATEMENT_E
我在对SQL Server2005数据库运行的VB6中遇到一个无法解释的错误。
以下是演示该问题的一些代码:
Sub ADOCommand()
Dim Conn As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim Cmd As ADODB.Command
Dim ErrorAlertID As Long
Dim ErrorTime As Date
Set Conn = New ADODB.Connection
Conn.ConnectionString = "Provider=SQLOLEDB
我试着让这句话奏效,但我似乎不能让它做我想做的事。如果我执行select @结果,它将给我值0,那么If语句为什么不能工作?
SET @message = '((sometihng here))';
select LEFT(@message, 1) into @firstChar;
select STRCMP(@firstChar,'(') into @result;
IF (@result = 0) THEN
SET @message = 'true';
//more selects and cals here;
END IF;
selec
我有一个查询,看起来像这样:
mysql_query("IF EXISTS(SELECT * FROM predict WHERE uid=$i AND bid=$j)
THEN UPDATE predict SET predict_tfidf=$predict_tfidf WHERE uid=$i AND bid=$j
ELSE INSERT INTO predict (uid, bid, predict_tfidf) VALUES('$i','$j','$predict_tfidf')
在下面的代码中似乎没有执行callable语句。
Connection con = DBConnection.getConnection(schema,uName,pwd);
String plsql =" " +
"BEGIN " +
" for crec in (select distinct filename from flex_template) loop " +
" Update vfs3 set created=sysdate where name =crec.filename;" +
我的应用程序中有一个简单的create查询( Spring 5.2.10 + Hibernate 5.4.3.1 + Weblogic 12c)。
它在我本地的weblogic服务器上运行良好,但在刷新时会在另一台weblogic服务器上出错。它们使用相同的数据源。
org.hibernate.exception.SQLGrammarException: could not execute statementjavax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not
我试着在网上找到这个问题的答案,但找不到任何明确的解释:
存储过程中的@是否服务于某种特殊用途/表示某种特定的东西?我对我们什么时候使用它有点困惑,因为示例似乎在用法上有所不同。
例如,在下面的示例中使用@:
DELIMITER $
DROP PROCEDURE IF EXISTS emp_count_2;
CREATE PROCEDURE emp_count_2(OUT param1 INT)
BEGIN
SELECT COUNT(*) INTO param1 FROM Employee;
END
$
DELIMITER ;
/* To invoke this procedure
这是我的简单循环
SET @id = 16;
SET @res = @id;
simple_loop: LOOP
SELECT @p := c_parent FROM categories WHERE c_id = @id;
IF @p > 0 THEN
SET @id = @p;
SET @res = @res + ',' + @p;
ELSE
LEAVE simple_loop;
END IF;
END LOOP simple_loop;
SELECT @res;
在phpMyAdmin中执行代码会得到标准错误
您的SQL语法有错误;请检
我的源代码 REATE OR REPLACE FUNCTION func1 RETURN VARCHAR2
AS LANGUAGE JAVE NAME 'test.quote() return
java.lang.String'; 当我在oracle sql上使用,但现在我想使用Alitibase DBS时,此代码将显示此sql打印错误 [ERR-31001 : SQL syntax error line 2: parse error AS LANGUAGE JAVE NAME'test.quote() return java.lang.String' 我需要
我对Netezza很陌生。我试图将一个变量传递到select语句中,但它给出了以下错误: 42000(27)ERROR: 'declare filter char(7)'
error ^ found "DECLARE" (at char 1) expecting a keyword 我不知道我做错了什么。我尝试了下面代码的不同变体,但它们都以相同的错误结束。 declare @filter char(7);
set @filter = 'A,B,U,F';
begin
Select @filter from TABLE where DA