我有简单的 oracle 功能
create or replace function abs.test_func(test_in in number)
return number
is
test_out number ;
BEGIN
test_out:=test_in;
RETURN test_out;
END;
Run Code Online (Sandbox Code Playgroud)
如果我编译它 - 它编译成功。但是当我从 PLSQL Developer SQL Window 运行时
BEGIN abs.test_func(5); END;
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
ORA-06550: line1, column8;
PLS-00221: 'TEST_FUNC' is not a procedure or is undefined
ORA-06550: line1, column8;
PL/SQL: Statement ignored
Run Code Online (Sandbox Code Playgroud)
我的功能有什么问题?
我喜欢这样做:
UPDATE table SET blobCol = HTTPGET(urlCol) WHERE whatever LIMIT n;
Run Code Online (Sandbox Code Playgroud)
有代码可以这样做吗?我知道这应该是可能的,因为MySQL Docs包含添加执行DNS查找的功能的示例.
MySQL/windows /最好不用编译东西,但我可以.
(如果你还没有听说过这样的事情,但是如果它确实存在的话,你会期望你会有这样的事情,"原则上不是"会很好.)
编辑:我知道这将打开一个完整的can-o-worms安全性,但在我的情况下,唯一访问数据库是通过mysql控制台应用程序.它不是一个世界可访问的系统.它不是网络后端.它只是一个本地数据记录系统
我已将我的功能简化为以下内容:
create function [dbo].[UserSuperTeams](@ProjectId int)
returns table
as
return
if @ProjectId=0
begin
select TeamId from TblTeam t
union
select 0 as TeamId
end
else
begin
select t.TeamId from TblTeam t
union
select 1 as TeamId
end;
go
Run Code Online (Sandbox Code Playgroud)
我无法使它工作..似乎我有一些语法错误,但我无法弄清楚如何让它工作..任何想法?
我正在构建一个具有SQL Server数据库连接的冷融合应用程序.我需要组记录,只返回组中的第一个.我在coldfusion中写了以下查询.
SELECT FIRST(ID)
FROM table
GROUP BY NAME
Run Code Online (Sandbox Code Playgroud)
哪个返回以下错误:
[Macromedia] [SQLServer JDBC Driver] [SQLServer]'first'不是公认的内置函数名.
这是一种在coldfusion查询中使用第一个函数的方法吗?
有没有其他方法可以实现这一目标?
*我没有直接访问数据库的权限.只需访问冷聚变数据连接
我正在写一个PostgreSQL递归函数,它返回一组记录,但我不知道它的正确语法.这里的递归表是Vertical,其中包含以下列:
CREATE TABLE vertical
(
id serial NOT NULL,
name character varying(100) NOT NULL,
insert_timestamp timestamp without time zone NOT NULL DEFAULT now(),
deleted smallint NOT NULL DEFAULT 0,
parent_id integer, // refer to another Vertical
locations character varying(200),
level smallint NOT NULL DEFAULT 1,
CONSTRAINT vertical_pkey PRIMARY KEY (id ),
CONSTRAINT vertical_parent_fkey FOREIGN KEY (parent_id)
REFERENCES vertical (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT name_ukey UNIQUE (name )
)
Run Code Online (Sandbox Code Playgroud)
这是我的SQL语句(通过指定的id获取Vertical的所有子项):
CREATE FUNCTION getAllVerticalChilds(verticalId integer) …Run Code Online (Sandbox Code Playgroud) 我需要一个MySQL函数,它允许我通过一些工作日(星期一到星期五)和开始DATE或DATETIME(对我的实现无关紧要),并让它返回一个新的DATE或DATETIME,许多工作日在将来.
示例:SELECT AddWorkDays(10, "2013-09-01")返回"2013-09-16",假设"2013-09-01"是星期一.
同样:SELECT AddWorkDays(-10, "2013-09-16")返回"2013-09-01"
我发现这个函数用于MSSQL数据库(我认为)正是我需要的,除了它不在MySQL中.我尝试手动将其转换为MySQL语法并实现了这一点:
DROP FUNCTION IF EXISTS AddWorkDays;
DELIMITER $$
CREATE FUNCTION AddWorkDays
(
WorkingDays INT,
StartDate DATE
)
RETURNS DATE
BEGIN
DECLARE Count INT;
DECLARE i INT;
DECLARE NewDate DATE;
SET Count = 0;
SET i = 0;
WHILE (i < WorkingDays) DO
BEGIN
SET Count = Count + 1;
SET i = i + 1;
WHILE DAYOFWEEK(ADDDATE(StartDate, Count)) IN (1,7) DO
BEGIN
SET Count = Count + …Run Code Online (Sandbox Code Playgroud) 我有这个架构:
当我想显示Attend表格时,而不是DoctorId和PatientId,显示员工姓名和患者姓名.
像这样:
第一种方法是使用内连接:
select
a.Id, p.Name, a.Name, a.Start, a.End
from
Patient as p
inner join
(select
e.Name, at.Id, at.Start, at.End, at.PatientId
from
Attend as at
INNER JOIN
Employee as e on at.DoctorId = e.Id) as a on p.Id = a.PatientId
Run Code Online (Sandbox Code Playgroud)
第二种方法是使用函数或存储过程 - 发送id和返回名称
select
a.Id,
FindDoctor(a.DoctorId) as Doctor,
FindPatient(a.PatientId) as Patient,
a.Start, a.EndTime
from
Attend AS a
Run Code Online (Sandbox Code Playgroud)
哪个更好?哪种是优化方法?
我想在SQL Server中覆盖系统定义的转换.那可能吗.
问题陈述
我有一个大的csv文件来上传数据库中的数据.有一个列BIT类型包含True/False,Yes/No,1/0
当我使用批量插入时True/False,'1/0'将被视为正确的值,但Yes/No(如预期的那样)将引发转换错误.
有没有办法转换Yes/No没有任何循环或逐个值?
编辑
自定义数据类型 PanelMemberType
CREATE TYPE [dbo].[PanelMemberType] AS TABLE(
[Email] [nvarchar](255) NOT NULL,
[LocationName] [nvarchar](255) NOT NULL,
[OptInPermission] [nvarchar](255) NOT NULL
)
GO
Run Code Online (Sandbox Code Playgroud)
存储过程代码:
ALTER PROCEDURE [dbo].[PanelMemberBulkUpdate]
@tblPanelMember PanelMemberType READONLY,
@PanelID int,
@UserID nvarchar(128)
AS
BEGIN
SET NOCOUNT ON;
MERGE INTO PanelMember p1
USING @tblPanelMember p2 ON p1.Email= p2.Email
WHEN MATCHED THEN
UPDATE SET
p1.PanelID = @PanelID,
p1.LocationID = (SELECT TOP(1) [LocationID] …Run Code Online (Sandbox Code Playgroud) 我不知道如何将SQLite的函数(例如substr(X,Y,Z))与SQLAlchemy的查询表达式语法一起使用。我知道我可以使用原始查询,但这会使重用where子句更加困难。这是我的用例:
我有一个文件头表(或模型类),可以查询该表以识别和列出某些类型的文件。
class Blob(Base):
__tablename__ = 'blob'
_id = Column('_id', INTEGER, primary_key=True)
size = Column('size', INTEGER)
hash = Column('hash', TEXT)
header = Column('header', BLOB)
meta = Column('meta', BLOB)
Run Code Online (Sandbox Code Playgroud)
例如,要识别Exif图像,我可以使用以下原始查询:
select * from blob where substr(header,7,4) = X'45786966'
Run Code Online (Sandbox Code Playgroud)
X'45786966'只是使用ASCII编码BLOB的字符串的SQLite 文字Exif。实际上,where子句更加复杂,我想将它们用作联接的过滤条件,大致如下:
# define once at module level
exif_conditions = [functions.substr(Blob.header, 7, 4) == b'Exif']
# reuse for arbitrary queries
session.query(Blob.hash).filter(*exif_conditions)
session.query(...).join(...).options(...).filter(condition, *exif_conditions)
Run Code Online (Sandbox Code Playgroud)
有没有办法用SQLAlchemy做到这一点?
表:
玩家
player_no | transaction_id
----------------------------
1 | 11
2 | 22
3 | (null)
1 | 33
Run Code Online (Sandbox Code Playgroud)
交易
id | value |
-----------------------
11 | 5
22 | 10
33 | 2
Run Code Online (Sandbox Code Playgroud)
我的目标是获取所有数据,维护所有玩家,即使null是以下查询中的值:
SELECT p.player_no, COUNT(p.player_no), SUM(t.value) FROM Players p
INNER JOIN Transactions t ON p.transaction_id = t.id
GROUP BY p.player_no
Run Code Online (Sandbox Code Playgroud)
然而,结果省略了空值,例如:
player_no | count | sum
------------------------
1 | 2 | 7
2 | 1 | 10
Run Code Online (Sandbox Code Playgroud)
我想提到的是空值:
player_no | count | sum
------------------------
1 | …Run Code Online (Sandbox Code Playgroud) sql-function ×10
sql ×5
sql-server ×3
mysql ×2
cfquery ×1
coldfusion ×1
database ×1
group-by ×1
http-get ×1
inner-join ×1
jdbc ×1
oracle ×1
plsql ×1
postgresql ×1
python ×1
querydsl ×1
recursion ×1
sqlalchemy ×1
sqlite ×1