我无法运行以下 SP
CREATE PROCEDURE SP_NYANSAT(
FORNAVN VARCHAR(30),
EFTERNAVN VARCHAR(30),
ADRESSE VARCHAR(50),
POSTNUMMER CHAR(4),
TELEFONNUMMER CHAR(8),
EMAIL VARCHAR(50))
AS
DECLARE VARIABLE ID INTEGER;
BEGIN
ID = GEN_ID(GEN_ANSAT_ID,1);
INSERT INTO MYTABLE (ID, FORNAVN, EFTERNAVN, ADRESSE, POSTNUMMER, TELEFONNUMMER, EMAIL) VALUES (:ID, :FORNAVN, :EFTERNAVN, :ADRESSE, :POSTNUMMER, :TELEFONNUMMER, :EMAIL);
END
Run Code Online (Sandbox Code Playgroud)
我得到的错误如下:
can't format message 13:896 -- message file C:\Windows\firebird.msg not found.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 3, column 1.
CREATE.
Run Code Online (Sandbox Code Playgroud) 我正在尝试在 phpMyAdmin 中创建以下存储过程。但是,我不断收到此错误:#1313 - RETURN is only allowed in a FUNCTION
CREATE PROCEDURE IS_POINT_IN_POLYGON()
BEGIN
DECLARE n INT DEFAULT 0;
DECLARE pX DECIMAL(19,16);
DECLARE pY DECIMAL(19,16);
DECLARE ls LINESTRING;
DECLARE poly1 POINT;
DECLARE poly1X DECIMAL(19,16);
DECLARE poly1Y DECIMAL(19,16);
DECLARE poly2 POINT;
DECLARE poly2X DECIMAL(19,16);
DECLARE poly2Y DECIMAL(19,16);
DECLARE i INT DEFAULT 0;
DECLARE result INT(1) DEFAULT 0;
SET pX = X(p);
SET pY = Y(p);
SET ls = ExteriorRing(poly);
SET poly2 = EndPoint(ls);
SET poly2X = X(poly2);
SET poly2Y …Run Code Online (Sandbox Code Playgroud) 在我的表格中,我每天都有:
Id_______Startdate _______ EndDate __________MondayMorning _____MondayEvening ___TuMorning ....
121 _____2012-01-01________2012-12-31 ________2 ___________________2______________2
122 _____2012-02-01________2012-08-05 ________1 ___________________2______________3
Run Code Online (Sandbox Code Playgroud)
我已经使用 Startdate 和 EndDate 生成了日期列表。
我想知道这个日期是属于奇数周还是偶数周,以便我可以从输出中过滤数字为 3 或 1 的日期(请参阅第二条记录)。
如何过滤属于编号为 1 和 3 的奇数周和偶数周的日期?
有谁知道我在这里做错了什么,我有一个从远程源获取货币数据的网页,我获取数据并通过存储过程将其插入到 sql 数据库中。如果我将 truncate 放在插入语句前面,它会截断表并插入最后一条记录。如果我删除截断,它会插入所有记录。
IE
truncate table tblTablename;
insert into tblTablename
(columns)
values
(data)
Run Code Online (Sandbox Code Playgroud)
上面将插入 289 条记录中的最后一条记录。
如果我删除截断,所有 289 条记录都会被插入。
我尝试过使用 waitfor 1 秒,但也没有成功。
我不知道还能做什么,所以任何帮助将不胜感激
在网页中我有一个 foreach 循环
乔治
/--------------------- SQL 代码 -----------------
ALTER PROCEDURE [dbo].[atSP_InsertCurrency]
-- Add the parameters for the stored procedure here
@CurrencyCountry VarChar(150),
@CurrencyRate VarChar(150),
@UpdateSuccessFail INT OUTPUT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
TRUNCATE TABLE [dbo].[at_CurrencyRates];
WAITFOR DELAY '000:00:01' …Run Code Online (Sandbox Code Playgroud) 我有一个 pl/sql 过程,如下所述
CREATE OR REPLACE PROCEDURE add_affectedCircle
(v_affected_circle IN v_circle.circle_code%type)
IS
v_circle_id NUMBER;
BEGIN
v_circle_id := get_circleID(v_affected_circle);
INSERT INTO vf_affected_circle (affected_circle)
values (v_circle_id);
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR (-20101, 'Problem in loading Affected Circle data');
END;
/
Run Code Online (Sandbox Code Playgroud)
首先,我使用函数 get_circleID 检查 vf_circle 表中的circle_code 列中可用的特定数据 v_affected_circle 并返回与circle_code 关联的circle_id。
CREATE OR REPLACE FUNCTION get_circleID
( v_circle_code vf_circle.circle_code%TYPE)
RETURN vf_circle.circle_id%TYPE
IS
return_value vf_circle.circle_id%TYPE;
BEGIN
BEGIN
SELECT circle_id INTO return_value
FROM vf_circle
WHERE circle_code = v_circle_code;
END;
RETURN return_value;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(-20102, …Run Code Online (Sandbox Code Playgroud) 我在 SQL Server 2012 Express 中编写了这个存储过程。
ALTER PROCEDURE [Dictionaries].[InsertCountry]
(@p_countryName nvarchar(128)
, @ret_countryId int OUTPUT)
AS
BEGIN
DECLARE @TransactionName VARCHAR(20) = 'INST_COUNTRY';
BEGIN TRANSACTION @TransactionName;
IF len(@p_countryName) <= 3
BEGIN
SET @ret_countryId = null
ROLLBACK TRANSACTION @TransactionName;
END
INSERT INTO [Dictionaries].[CountryDetails] (name)
VALUES (@p_countryName);
SET @ret_countryId = @@IDENTITY
INSERT INTO [Dictionaries].[Places] (name, Discriminator , CountryDetails_Id, RegionDetails_Id, CityDetails_Id)
VALUES (@p_countryName, 'Country' , @ret_countryId, null, null);
COMMIT TRANSACTION @TransactionName;
END
Run Code Online (Sandbox Code Playgroud)
我以这种方式使用这个方法,但我收到消息
COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION。
代码:
declare @ret int = null …Run Code Online (Sandbox Code Playgroud) 我正在尝试执行一个名为getLastFeatureUpdate.
我将在下面一步一步解释这个问题:
我在 SQL 中创建了一个表,如下所示:
CREATE TABLE testTable
(
DayTime INT NOT NULL, /*yyddhhmm, 1010102345*/
FeatureNbr SMALLINT NOT NULL,
Val FLOAT(53) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
我现在已经创建了一个名为getLastFeatureUpdate. 这里需要注意的是,我使用了 2 个参数@maxDateTime和@tableName,因为它们每次都不同。所以我将在最后的 C# 代码中传递这两个参数。
存储过程(如果我@tableName text从过程和 C# 代码中删除。那么代码确实可以提及)
CREATE PROCEDURE getLastFeatureUpdate
@maxDateTime float(53) = 0,
@tableName text
AS
SELECT
test.FeatureNbr,
test.DayTime,
test.Val
FROM
@tableName test
WHERE
DayTime = (SELECT MAX(DayTime)
FROM @tableName
WHERE FeatureNbr = test.FeatureNbr --This is what you are missing
AND DayTime …Run Code Online (Sandbox Code Playgroud) 我正在使用 Dapper,并且编写了一个存储过程,用于插入一行并返回标识值。
使用Dapper,我想捕获这个标识值,但结果作为动态类型返回,我不知道如何访问这个id。
我的存储过程:
CREATE PROCEDURE USER_INSERT
(@name varchar(30),
@job varchar(30))
AS
BEGIN
INSERT INTO User (name, job)
VALUES (@name, @job)
SELECT SCOPE_IDENTITY()
END
Run Code Online (Sandbox Code Playgroud)
C#代码:
public async Task<int> InsertTest()
{
using (var connection = new SqlConnection("myconnectionstring"))
{
string SP_INSERT = "USER_INSERT";
var parameters = new { name = "Jon", job = "developer" };
var insert = await connection.QueryAsync(SP_INSERT, parameters, commandType: CommandType.StoredProcedure);
var resultInsert = insert.SingleOrDefault();
}
return 0; //only for test
}
Run Code Online (Sandbox Code Playgroud)
查询结果截图,如何访问我的id字段?
我有一个看起来像这样的存储过程:
CREATE PROCEDURE sample_sp
(
@StartCreateDate NVARCHAR(30)= NULL,
@EndCreateDate NVARCHAR(30)= NULL,
@Name NVARCHAR(255) = NULL,
@Offset INT = 1,
@PageSize INT = 10
)
As
BEGIN
SET NOCOUNT ON;
SELECT * FROM sample_table
WHERE
(@StartCreateDate IS NULL OR [created_at] >= @StartCreateDate)
AND
(@EndCreateDate IS NULL OR [created_at] <= @EndCreateDate)
AND
(@NAME IS NULL OR [name] = @Name)
ORDER BY id
OFFSET (@Offset)*@PageSize ROWS
FETCH NEXT @PageSize ROWS ONLY
END
Run Code Online (Sandbox Code Playgroud)
执行命令是
EXEC sample_sp @Name = N'????'
Run Code Online (Sandbox Code Playgroud)
我在字符串值之前使用的执行命令中也定义了NameasNVARCHAR(255)和 …
我正在尝试创建一个存储过程,将 TVP 传递给该过程,然后将 TVP 中的一些数据插入到两个表中。
我已经实现了存储过程,但只有第二个插入(唯一不从 TVP 读取的)在工作。另外两个不起作用(不要插入任何东西),我似乎无法弄清楚原因。
我试图在 SQL Server 中创建一个虚拟 TVP 并在那里运行该过程,但这也不起作用。这是因为 TVP 是只读的吗?我不会假设,因为我实际上并没有在 TVP 中插入或更新数据。
有没有办法使这项工作?
谢谢您的帮助!
表值参数定义:
CREATE TYPE dbo.Ingredients
AS TABLE
(
Quantity int,
Measure nvarchar(50),
Ingredient nvarchar(50),
)
GO
Run Code Online (Sandbox Code Playgroud)
存储过程:
ALTER PROCEDURE uspCreateRecipe
(@IDUser int,
@RecipeName nvarchar(50),
@Category nvarchar(50),
@Difficulty nvarchar(50),
@Duration nvarchar(50),
@ING dbo.Ingredients READONLY,
@Execution text)
AS
BEGIN
INSERT INTO dbo.Ingredients
VALUES ((SELECT Ingredient FROM @ING WHERE NOT EXISTS (SELECT Ingredient FROM @ING WHERE Ingredient IN (SELECT IngredientName FROM dbo.Ingredients))), 2)
INSERT …Run Code Online (Sandbox Code Playgroud) sql t-sql sql-server stored-procedures table-valued-parameters
sql-server ×7
sql ×4
c# ×2
t-sql ×2
dapper ×1
database ×1
firebird ×1
identity ×1
mysql ×1
mysql-error ×1
oracle ×1
phpmyadmin ×1
plsql ×1
transactions ×1